我正在尝试为每个非数字属性创建依赖列,并从 UCI 中消除成人数据集中的那些非数字属性。我正在使用 sklearn.feature_extraction.text 库中的 CountVectorizer。但是我卡在我的程序说的地方,np.nan 是一个无效的文档,预期的字节或 unicode 字符串。”
我只是想了解为什么会出现该错误。谁能帮帮我,谢谢。
这是我的代码,
import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
def check(ex):
try:
int(ex)
return False
except ValueError:
return True
feature_cols = ['age', 'workclass', 'fnlwgt', 'education', 'education-num', 'marital-status', 'occupation', 'relationship', 'race', 'sex', 'capital-gain', 'capital-loss', 'hours-per-week', 'native-country', 'Target']
data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data', header=None, names = feature_cols)
feature_cols.remove('Target')
X = data[feature_cols]
y = data['Target']
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 1)
columns = X.columns
vect = CountVectorizer()
for each in columns:
if check(X[each][1]):
temp = X[each]
X_dtm = pd.DataFrame(vect.fit_transform(temp).toarray(), columns = vect.get_feature_names())
X = pd.merge(X, X_dtm, how='outer')
X = X.drop(each, 1)
print X.columns
错误是这样的
回溯(最后一次调用):文件“/home/amey/prog/pd.py”,第 41 行,在 X_dtm = pd.DataFrame(vect.fit_transform(temp).toarray(), columns = vect.get_feature_names() )
文件“/usr/lib/python2.7/dist-packages/sklearn/feature_extraction/text.py”,第 817 行,在 fit_transform self.fixed_vocabulary_ 中)
_count_vocab 中的文件“/usr/lib/python2.7/dist-packages/sklearn/feature_extraction/text.py”,第 752 行,用于分析(doc)中的功能:
文件“/usr/lib/python2.7/dist-packages/sklearn/feature_extraction/text.py”,第 238 行,在 tokenize(preprocess(self.decode(doc))), stop_words)
解码中的文件“/usr/lib/python2.7/dist-packages/sklearn/feature_extraction/text.py”,第 118 行
raise ValueError("np.nan is an invalid document, expected byte or "
ValueError:np.nan 是无效的文档、预期的字节或 unicode 字符串。
[在 3.3 秒内完成,退出代码为 1]