Слишком низкий показатель доверия - PullRequest
1 голос
/ 08 января 2020

Мне интересно, почему оценка модели очень низкая, всего 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)

это ссылка на набор данных, который я использую

<a href="https://www.kaggle.com/neuromusic/avocado-prices" rel="nofollow noreferrer">https://www.kaggle.com/neuromusic/avocado-prices</a>

1 Ответ

1 голос
/ 09 января 2020

Таким образом, функция оценки, которую вы используете:

Возвращает коэффициент определения R ^ 2 прогноза.

Коэффициент R ^ 2 определяется как (1 - u / v), где u - остаточная сумма квадратов ((y_true - y_pred) ** 2) .sum (), а v - общая сумма квадратов ((y_true - y_true.mean ()) ** 2). сумма (). Наилучшая возможная оценка - 1,0, и она может быть отрицательной (поскольку модель может быть произвольно хуже). Постоянная модель, которая всегда прогнозирует ожидаемое значение y, независимо от входных функций, получит оценку R ^ 2 0,0.

Так что, как вы понимаете, вы уже выше постоянного предсказания.

Мой совет, постарайтесь построить ваши данные, чтобы увидеть, какой тип регрессии вы должны использовать. Здесь вы можете увидеть обзор, какой тип линейной регрессии доступен: https://scikit-learn.org/stable/modules/linear_model.html

Logisti c регрессия имеет смысл, если ваши данные имеют кривую logisti c, что означает, что ваши очки либо близки к 0, либо к 1, а в середине не так много очков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...