【发布时间】:2021-02-12 05:12:01
【问题描述】:
我正在尝试自动特征工程和选择,为此,我使用了 sklearn 中提供的波士顿房价数据集。
from sklearn.datasets import load_boston
import pandas as pd
data = load_boston()
x = data.data
y= data.target
y = pd.DataFrame(y)
然后我在数据集上实现了特征转换库。
import autofeat as af
clf = af.AutoFeatRegressor()
df = clf.fit_transform(x,y)
df = pd.DataFrame(df)
在此之后,我实现了另一个函数来查找每个特征相对于标签的得分。
from sklearn.feature_selection import SelectKBest, chi2
X_new = SelectKBest(chi2, k=20)
X_new_done = X_new.fit_transform(df,y)
dfscores = pd.DataFrame(X_new.scores_)
dfcolumns = pd.DataFrame(X_new_done.columns)
featureScores = pd.concat([dfcolumns,dfscores],axis=1)
featureScores.columns = ['Specs','Score']
print(featureScores.nlargest(10,'Score'))
这给出了如下错误。
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-16-b0fa1556bdef> in <module>()
1 from sklearn.feature_selection import SelectKBest, chi2
2 X_new = SelectKBest(chi2, k=20)
----> 3 X_new_done = X_new.fit_transform(df,y)
4 dfscores = pd.DataFrame(X_new.scores_)
5 dfcolumns = pd.DataFrame(X_new_done.columns)
ValueError: Input X must be non-negative.
我的数据集中有一些负数。那么我该如何克服这个问题呢?
注意:- df 现在有y 的转换,它只有x 的转换。
【问题讨论】:
标签: python-3.x scikit-learn feature-extraction sklearn-pandas feature-engineering