【发布时间】:2019-12-22 23:44:18
【问题描述】:
我正在尝试输入一个句子并将其分类为 1 或 0。我有两列数据,第一列是句子文本(例如“这是一个句子”),第二列是分类(例如 0 或 1)。
我已经预测了要解释的值,只是我似乎无法理解图表的 X 轴以及为什么我的回归线看起来像它的样子。
import nltk
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from os import listdir
from os.path import isfile, join
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics import roc_auc_score, mean_squared_error, r2_score
from sklearn import linear_model
X_train, X_test, Y_train, Y_test = train_test_split(labor_data['text'],labor_data['label_one'],random_state=0)
vect = CountVectorizer(ngram_range=(1,1),min_df=0,max_df=.25).fit(X_train)
X_train_vectorized = vect.transform(X_train)
lr_model = linear_model.LinearRegression()
lr_model.fit(X_train_vectorized,Y_train)
lr_predictions = lr_model.predict(vect.transform(X_test))
plt.scatter(X_test, Y_test, color='black')
plt.plot(X_test, lr_predictions, color='blue', linewidth=3)
plt.xticks(())
plt.yticks(())
plt.show()
我了解 Y 轴是值,但不了解 X 轴或我的回归线。我知道我的 lr_predictions 是 0 到 1 之间的值,图中的所有值也是如此。但是这条线不应该是一条向下倾斜的直线吗?
【问题讨论】:
-
你能看一下你的“vect”变量上有什么吗?
-
只是一个CountVectorizer
CountVectorizer(analyzer='word', binary=False, decode_error='strict', dtype=<class 'numpy.int64'>, encoding='utf-8', input='content', lowercase=True, max_df=0.25, max_features=None, min_df=0, ngram_range=(1, 1), preprocessor=None, stop_words=None, strip_accents=None, token_pattern='(?u)\\b\\w\\w+\\b', tokenizer=None, vocabulary=None) -
输出是什么样的?打印 X_train_vectorized。
标签: python machine-learning scikit-learn nlp