在对一包单词实现线性回归模型期间,python返回了非常大/低的值。 OBJS = $(wildcard ./neo/engine/*.cpp) $(wildcard ./neo/engine/**/*.cpp)
包含训练数据中的所有单词。训练数据包含大约400个评论,每个评论少于500个字符,排名在0到5之间。然后,我为每个文档创建了一个单词包。在尝试对所有单词的矩阵执行线性回归时,
train_data_features
结果似乎很奇怪(只是4000的3个例子)。它显示了创建的回归函数的因子。
from sklearn import linear_model
clf = linear_model.LinearRegression()
clf.fit(train_data_features, train['dim_hate'])
coef = clf.coef_
words = vectorizer.get_feature_names()
for i in range(len(words)):
print(str(words[i]) + " " + str(coef[i]))
我非常困惑,因为目标变量在0到5之间,但因素是如此不同。他们中的大多数都有非常高/低的数字,我只期望像btw -0.297473967075
land 54662731702.0
landesrekord -483965045.253
那样的值。
你有一个想法,为什么结果就像它们一样?
答案 0 :(得分:3)
可能是您的模型过度拟合数据,因为它试图与输出完全匹配。您是正确的担心和怀疑,因为这意味着您的模型可能过度拟合您的数据,并且不会很好地概括为新数据。您可以尝试以下两种方法之一:
LinearRegression(normalize=True)
,看看它是否有助于系数。但这只是一个临时解决方案。答案 1 :(得分:0)
检查数据集中的相关功能。
如果您的功能高度相关,则可能会遇到问题。例如每个客户的费用-
jan_expenses, feb_expenses, mar_expenses, Q1_expenses
Q1特征是1月的总和,因此,当试图拟合时,您的系数将变得“疯狂”,因为它将难以找到最能描述月度特征和Q特征的线。尝试删除高度相关的功能,然后重新运行。
(btw Ridge回归也为我解决了这个问题,但是我很好奇为什么会这样,所以我挖了一点)