我正在使用sckit-learn对文本数据进行预处理我的目标是获取我的数据的矢量表示(特征和标签),我所做的是使用tfidf矢量化特征,之后数据集大小由双倍大小改变使用 X.ravel()。
之前的X(30376,2)
X之后(60752,41331)
我的问题是,当我在x向量中有两个特征时,我想正确地得到矢量表示我是如何做到的
df = pd.read_csv('Dataset.csv',encoding='latin1')
df = df.dropna()
X = np.array(df.drop(['Type'], 1))
y = np.array(df['Type'])
#print(X)
print("Extracting features from the training data using a sparse vectorizer")
vectorizer= TfidfVectorizer(sublinear_tf=True, max_df=0.5,
stop_words='english')
X = vectorizer.fit_transform(X.ravel().astype('U'))
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
X = imp.fit_transform(X)
X.shape
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
如果是我使用 train_test_split 的情况我得到此错误我不明白它指的是什么
TypeError: Singleton array array(TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',
dtype=<class 'numpy.int64'>, encoding='utf-8', input='content',
lowercase=True, max_df=0.5, max_features=None, min_df=1,
ngram_range=(1, 1), norm='l2', preprocessor=None, smooth_idf=True,
stop_words='english', strip_accents=None, sublinear_tf=True,
token_pattern='(?u)\\b\\w\\w+\\b', tokenizer=None, use_idf=True,
vocabulary=None), dtype=object) cannot be considered a valid collection.
任何建议和感谢
答案 0 :(得分:0)
X
或y
形状错误。
这是一个excerpt from the validation.py,用于验证传递的数据集:
if hasattr(x, 'shape'):
if len(x.shape) == 0: # <----- NOTE !!!
raise TypeError("Singleton array %r cannot be considered"
" a valid collection." % x)
return x.shape[0]
else:
return len(x)