python - 线性模型的系数太大/太低

标签 python python-3.x numpy scikit-learn data-analysis

在对一袋词实现线性回归模型时,python 返回了非常大/非常低的值。 train_data_features 包含训练数据中的所有单词。训练数据包含大约 400 条评论,每条评论少于 500 个字符,排名在 0 到 5 之间。之后,我为每个文档创建了一个词袋。在尝试对所有词袋的矩阵进行线性回归时,

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]))

结果好像很奇怪(只是4000中3的例子)。它显示了为单词创建的回归函数的因素。

btw -0.297473967075
land 54662731702.0
landesrekord -483965045.253

我很困惑,因为目标变量在 0 和 5 之间,但因子却如此不同。他们中的大多数都有非常高/低的数字,我只期待像 btw 中的一个这样的值。

你知道为什么结果是这样吗?

最佳答案

可能是您的模型对数据过度拟合,因为它试图与输出完全匹配。您的担心和怀疑是对的,因为这意味着您的模型可能过度拟合您的数据,并且不会很好地泛化到新数据。您可以尝试以下两种方法之一:

  • 运行 LinearRegression(normalize=True) 并查看它是否对系数有帮助。但这只是一个临时解决方案。
  • 使用Ridge regression反而。它基本上是在进行线性回归,除了会因系数过大而受到惩罚。

关于python - 线性模型的系数太大/太低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35832713/

相关文章:

python - 更改多个表单大小 Django Bootstrap

python - 如何在 Python 3.6 中将 .eps 文件转换为 .png

python - 如何在 python 中安全地解压字典?

python - NumPy 中的多轴均值

python - path.exists 在 rmtree 命令后返回意外结果

python - 为什么这个 o(n) 三向集不相交算法比 o(n^3) 版本慢?

python - 如何以非 super 用户身份将 Python 符号链接(symbolic link)到 Python2.7

python - 如何从单个应用程序路由 : Flask (Python) 返回多个响应

python - 重复 numpy 数组的每个元素 5 次

python - 如何保存数组的交错值?