gpt4 book ai didi

scikit-learn - SelectKbest, Treeclassifer, 某处出现小错误 :(

转载 作者:行者123 更新时间:2023-12-05 06:43:47 24 4
gpt4 key购买 nike

在上课时,我被困在我认为必须是小问题的地方。我想用 SelectKBest 找出最重要的特征是什么(我将 k 从 2,4,6,8 改变)

我加载数据

data_dict = pickle.load(open("final_project_dataset.pkl", "r") )
my_dataset = data_dict
data = featureFormat(my_dataset, feature_combo, sort_keys = True)
labels, features = targetFeatureSplit(data)
kbest = SelectKBest(k=2)
train_new= kbest.fit_transform(features,labels)

通过 get_support 我找出了最重要的功能,然后尝试将其与我的分类器一起使用

from sklearn import tree 
clf1 = tree.DecisionTreeClassifier(min_samples_split=2)
test_classifier(clf1, my_dataset, feature_lists2)

我首先使用了一个功能列表,其中包含我称为组合的所有功能:

feature_combo=['poi','salary','bonus','total_stock_value','long_term_incentive','restricted_stock_deferred','from_this_person_to_poi','shared_receipt_with_poi','newfeature_ratio','total_payments','deferral_payments','loan_advances', 'restricted_stock','director_fees','to_messages','from_messages']

在获得最重要的功能后,我创建了如下功能列表:

feature_lists2=['salary','bonus']

当我运行它时,我得到了一个神秘的错误:

Traceback (most recent call last):
File "C:\Users\Stephan\Downloads\ud120-projects\final_project\poi_id.py", line 62, in <module>
train_new= kbest.fit_transform(features,labels)
File "C:\Users\Stephan\Anaconda\lib\site-packages\sklearn\base.py", line 429, in fit_transform
return self.fit(X, y, **fit_params).transform(X)
File "C:\Users\Stephan\Anaconda\lib\site-packages\sklearn\feature_selection\univariate_selection.py", line 300, in fit
self._check_params(X, y)
File "C:\Users\Stephan\Anaconda\lib\site-packages\sklearn\feature_selection\univariate_selection.py", line 405, in _check_params
% self.k)
ValueError: k should be >=0, <= n_features; got 2.Use k='all' to return all features.
[Finished in 0.5s with exit code 1]

谁能看出我做错了什么? (我是初学者)

最佳答案

你的问题我有点不清楚。我不确定您何时收到此错误并且您没有提供数据来制作可重现的示例。但是,如果您阅读错误消息,它会非常清楚地说明问题:

ValueError: k should be >=0, <= n_features; got 2.Use k='all' to return all features.

这意味着您的 SelectKBest() 对象中的 k 参数不在适当的范围内。具体来说,k=2 大于 n_features,这意味着您传递给 kbest.fit_transform() 调用的数据少于 2 列。在没有看到任何数据的情况下,我不能说为什么会发生这种情况,但这几乎可以肯定是您的错误来源。

关于scikit-learn - SelectKbest, Treeclassifer, 某处出现小错误 :(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31786396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com