置信度太低

问题描述 投票:1回答:1

我想知道为什么模型得分非常低,只有0.13,我已经确保数据是干净的,可缩放的,并且每个特征之间也具有高度相关性,但是使用线性回归的模型得分非常低,为什么会发生这种情况,并且如何解决呢?这是我的代码

import numpy as np 
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn import preprocessing


path = r"D:\python projects\avocado.csv"
df = pd.read_csv(path)
df = df.reset_index(drop=True)
df.set_index('Date', inplace=True)
df = df.drop(['Unnamed: 0','year','type','region','AveragePrice'],1)
df.rename(columns={'4046':'Small HASS sold',
                          '4225':'Large HASS sold',
                          '4770':'XLarge HASS sold'}, 
                 inplace=True)
print(df.head)

sns.heatmap(df.corr())
sns.pairplot(df)
df.plot()
_=plt.xticks(rotation=20)

forecast_line = 35
df['target'] = df['Total Volume'].shift(-forecast_line)

X = np.array(df.drop(['target'], 1))
X = preprocessing.scale(X)
X_lately = X[-forecast_line:]
X = X[:-forecast_line]
df.dropna(inplace=True)


y = np.array(df['target'])

X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.2)
lr = LinearRegression()
lr.fit(X_train,y_train)
confidence = lr.score(X_test,y_test)
print(confidence)

这是我使用的数据集的链接

https://www.kaggle.com/neuromusic/avocado-prices
python-3.x machine-learning linear-regression
1个回答
1
投票

所以您使用的得分函数是:

返回预测的确定系数R ^ 2。

系数R ^ 2定义为(1-u / v),其中u是残差平方和((y_true-y_pred)** 2).sum()和v是总和平方((y_true-y_true.mean())** 2).sum()。最好的得分是1.0,并且可能为负(因为模型可以是任意更糟)。始终预测预期的恒定模型y的值,不考虑输入特征,将获得R ^ 2的分数0.0。

因此,您意识到自己已经超出了常量预测。

我的建议尝试绘制数据,以查看应使用哪种回归。在这里,您可以查看可用的线性回归类型的概述:https://scikit-learn.org/stable/modules/linear_model.html

如果数据具有逻辑曲线,则逻辑回归是有意义的,这意味着您的点接近0或接近1,而中间没有那么多点。

© www.soinside.com 2019 - 2024. All rights reserved.