Я пробовал твой пример. Вот мои наблюдения и предложения.
1) Вы не обучаете свою модель на достаточном количестве данных. => Я попытался вставить пару случайных точек данных в ваш DF, и оценка сместилась с -27.xx на -0,10. Это показывает, что вам нужно больше данных для обучения.
2) Используйте масштабатор (например, StandardScaler) для масштабирования точек данных, прежде чем фактически использовать .fit
для размещения ваших данных в regressor
. Это позволит масштабировать ваши точки данных так, чтобы они имели среднее значение 0 и стандартное отклонение 1.
После выполнения вышеупомянутых 1 и 2 я получил оценку -0.10xx
(намного лучше, чем исходное -27.xx
) и coeff 282.974346
и 759.690447
для группы 1 и группы 2 соответственно
Вот мой код для справки, который я пробовал:
(ЭТО СОДЕРЖИТ ЭТИ ФАКТИЧЕСКИЕ ДАННЫЕ, КОТОРЫЕ Я ВСТАВЛЕН СЛУЧАЙНО (последние 4 точки данных в каждой группе))
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
import matplotlib.pyplot as plt
g1=np.array([1003, 145, 1344, 66, 171, 962,100,200,300,400])
g2=np.array([602, 140, 390, 1955, 289, 90,80,170,245,380])
th=np.array([1999, 341, 1151, 2605, 568, 864,1000,300,184,411])
dataset = pd.DataFrame({'Group 1 Frames':g1,'Group 2 Frames':g2,'Total Hours':th})
X = dataset[['Group 1 Frames', 'Group 2 Frames']]
# print(X)
y = dataset['Total Hours']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.25, random_state=0)
pipeline=Pipeline([('norm', StandardScaler()), ('linreg', LinearRegression())])
pipeline.fit(X_train, y_train)
print(pipeline.score(X_test,y_test))
y_pred=pipeline.predict(X_test)
fig,ax=plt.subplots()
ax.plot(X_test,y_test,label='Actual')
ax.plot(X_test,y_pred,label='Predicted')
ax.legend()
plt.show()
coeff_df = pd.DataFrame(pipeline['linreg'].coef_, X.columns, columns=['Coefficient'])
print(coeff_df)
ЗДЕСЬ Я ТАКЖЕ ЗАПИСИЛ ПРЕДПОЛАГАЕМЫЕ ДАННЫЕ С ФАКТИЧЕСКИМИ ДАННЫМИ ИСПЫТАНИЙ