np.nan是一个无效的文档、CountVectorizer中预期的字节或unicode字符串



我试图为每个非数字属性创建依赖列,并从UCI中消除成人数据集中的非数字属性。我正在使用来自sklearn.feature_extraction的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

错误如下

Traceback(最近一次调用):文件"/home/amy/prog/pd.py",第41行X_dtm = pd.DataFrame(vector .fit_transform(temp).toarray(), columns = vector .get_feature_names())

文件"/usr/lib/python2.7/dist-packages/sklearn/feature_extraction/text.py",第817行,在fit_transform .py中self.fixed_vocabulary_)

文件"/usr/lib/python2.7/dist-packages/sklearn/feature_extraction/text.py",第752行,在_count_vocab .py中对于analyze(doc)中的特性:

文件"/usr/lib/python2.7/dist-packages/sklearn/feature_extraction/text.py",第238行,in标记(预处理(self.decode (doc))), stop_words)

文件"/usr/lib/python2.7/dist-packages/sklearn/feature_extraction/text.py",第118行,decode

raise ValueError("np.nan is an invalid document, expected byte or "

ValueError: np。Nan是一个无效的文档、期望的字节或unicode字符串。

[3.3秒完成,退出代码1]

您的特征栏中的一些特征是nan。因此,在使用CountVectorizer这些特性之前,您需要更改这些值。
导入数据后立即使用如下命令:

some_variable = your_feature_data.fillna('c')
c= #you can fill it or leave empty as per your choice.

相关内容

最新更新