培训物流分类器



我正在尝试训练一个逻辑分类器。我的数据集包含以下列。

姓名评论评级reviews_cleanedword_count情绪

情绪为 +1 或 -1,具体取决于评分是大于 3 还是更低。字数统计包含带有出现的单词字典,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 create 的等效语句是

sentiment_model = graphlab.logistic_classifier.create(train_data,
                                                      target = 'sentiment',
                                                      features=['word_count'],
                                                      validation_set=None)

我做错了什么?

你的训练数据看起来像一个一维向量,但sklearn要求它是二维的——如果你reshape它,你应该没问题。此外,你使训练/测试分开,但你实际上并没有使用你正在生成的数据(改为适合train_data(。

至少可以说,在该课程中使用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

让我知道你得到了什么结果,或者这是否适合你。

最新更新