我在试着训练一个后勤分类器。我的数据集有以下列。
name,review,name,,word_count,#en0#E 211,
根据评级是否大于3或更低,情绪要么是+1,要么是-1。单词计数包含一组带有发生的单词,而reviews_cleaned只是去掉了标点符号的评论。
这是我训练LogisticClassifier的代码。
train_data, test_data = train_test_split(products, test_size = 0.2)
sentiment_model = LogisticRegression(penalty='l2', C=1)
sentiment_model.fit(products['sentiment'], products['word_count'])我得到以下错误,
ValueError: Found input variables with inconsistent numbers of samples: [1, 166752]PS:使用graphLab创建的等效状态是
sentiment_model = graphlab.logistic_classifier.create(train_data,
target = 'sentiment',
features=['word_count'],
validation_set=None)我做错了什么?
发布于 2017-03-19 17:06:35
你的训练数据看起来像是一个一维向量,但是sklearn要求它是二维的-如果你reshape它,你应该没事。此外,您还将您的培训/测试分离,但您实际上并没有使用您正在生成的数据(与train_data相反)。
发布于 2017-09-26 16:38:38
至少可以说,在这门课中使用GraphLab是非常令人恼火的。让它旋转一下:
from sklearn.cross_validation import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import CountVectorizer
df = pd.read_csv('amazon_baby.csv', header = 0)
df.dropna(how="any", inplace= True)
products = df[df['rating'] != 3] #drop the products with 3-star rating
products['sentiment'] = products['rating'] >= 4
X_train, X_test, y_train, y_test = train_test_split(products['review'], products['sentiment'], test_size = .2 ,random_state = 0)
vect = CountVectorizer()
X_train = vect.fit_transform(X_train.values)
X_test = vect.transform(X_test.values)
model = LogisticRegression(penalty ='l2', C = 1)
model.fit(X_train, y_train)我不知道Sklearn/Pandas和GraphLab之间的直接翻译是什么,但这似乎是他们正在做的事情。
当我给模特打分时,我得到:
model.score(X_test, y_test)
> .93155480让我知道你得到了什么结果,或者如果这对你有用。
https://stackoverflow.com/questions/42889335
复制相似问题