Как определить правильную форму при построении линейной регрессии? - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь визуализировать свою модель линейной регрессии и, к сожалению, не могу понять, как управлять данными для правильного построения результатов регрессии.Ниже приведены шаги, которые я предпринял для выполнения модели линейной регрессии, как выглядят данные, и какие ошибки я получаю.

X=sale[['Dec-2018','Nov-2018', 'Oct-2018','Sep-2018','Aug-2018','Jul-2018']]
y=sale[['CLV']]

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state=0)

from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
linreg.fit(X_train, y_train)
y_pred = linreg.predict(X_test)

print (X)
print (y)
X.iloc[:,:] = labelencoder_X.fit_transform(X.iloc[:,:])
y.iloc[:,:1] = labelencoder_y.fit_transform(y.iloc[:,:1])
plt.scatter(X_test, y_test, color='black')
plt.plot(X_train, y_pred, color = 'green', linewidth=3)
plt.title('CLTV (Training set)')
plt.xlabel('Time')
plt.ylabel('CLV')
plt.show()

Ниже приведено состояние данных и полученная ошибка:

   month_year  Dec-2018  Nov-2018  Oct-2018  Sep-2018  Aug-2018  Jul-2018
0               0.00      0.00      0.00      0.00      0.00      0.00
1               0.00      0.00      0.00      0.00      0.00      0.00
2               0.00    286.40      0.00    825.92      0.00    902.09
3               0.00      0.00      0.00    521.50      0.00      0.00
4               0.00   6354.88  16471.77   2941.72  21706.44   2796.36
5               0.00      0.00      0.00    147.70      0.00      0.00
6               0.00      0.00      0.00      0.00      0.00      0.00
7               0.00    601.44    678.76      0.00    608.76   1064.08
8               0.00      0.00      0.00    519.89      0.00      0.00
9             438.50    312.73    675.38      0.00    301.70      0.00
10            998.61   9053.83   2149.30   5999.50    654.37   1070.59
11            763.06    572.59      0.00      0.00   1724.95      0.00
12            210.35      0.00    343.76    217.77      0.00      0.00
13              0.00      0.00      0.00      0.00      0.00      0.00
14              0.00      0.00      0.00    918.98      0.00      0.00
15              0.00      0.00      0.00    535.50    229.50      0.00
16              0.00      0.00    392.08      0.00      0.00      0.00
17            142.60    279.50      0.00    234.00      0.00      0.00
18            111.45    100.95    217.75      0.00      0.00      0.00
19            327.40      0.00    245.80     77.31    338.20      0.00
20              0.00      0.00      0.00      0.00      0.00      0.00
21              0.00    400.32      0.00   1210.32      0.00   2915.92
22              0.00      0.00      0.00      0.00      0.00      0.00
23              0.00    115.23      0.00    267.80      0.00      0.00
24              0.00      0.00      0.00      0.00      0.00    417.38
25              0.00      0.00      0.00      0.00      0.00      0.00
26              0.00      0.00    497.83      0.00      0.00    446.09
27              0.00      0.00      0.00      0.00      0.00      0.00
28              0.00    279.86      0.00      0.00      0.00      0.00
29            752.39   1070.14    387.80    692.24    330.44    653.00
...              ...       ...       ...       ...       ...       ...
3898            0.00    117.54    311.63    438.14    537.95    165.00
3899            0.00      0.00      0.00   1538.41      0.00      0.00
3900          874.45      0.00      0.00      0.00      0.00    361.48
3901            0.00    363.20      0.00      0.00      0.00      0.00
3902            0.00      0.00      0.00      0.00    297.06      0.00
3903            0.00     95.34      0.00      0.00      0.00      0.00
3904            0.00      0.00      0.00      0.00      0.00      0.00
3905            0.00      0.00      0.00   4314.72      0.00      0.00
3906            0.00      0.00    448.37      0.00      0.00      0.00
3907            0.00      0.00      0.00    103.30      0.00      0.00
3908            0.00      0.00    774.76      0.00    627.27      0.00
3909            0.00   1070.40      0.00    891.90      0.00      0.00
3910            0.00      0.00      0.00      0.00      0.00      0.00
3911            0.00      0.00     99.44    224.80      0.00      0.00
3912            0.00      0.00      0.00      0.00      0.00    149.48
3913            0.00    399.68      0.00      0.00      0.00    503.80
3914            0.00      0.00      0.00    312.96      0.00    488.55
3915            0.00      0.00      0.00      0.00      0.00     25.50
3916            0.00      0.00      0.00      0.00      0.00      0.00
3917            0.00    171.20      0.00      0.00      0.00      0.00
3918          367.88      0.00    604.25      0.00    372.25    753.66
3919            0.00      0.00      0.00      0.00      0.00      0.00
3920            0.00      0.00    329.61      0.00      0.00      0.00
3921            0.00      0.00    110.38      0.00      0.00      0.00
3922            0.00      0.00      0.00    173.90      0.00      0.00
3923            0.00      0.00      0.00      0.00      0.00      0.00
3924            0.00      0.00      0.00      0.00      0.00      0.00
3925           77.84      0.00      0.00      0.00     98.76      0.00
3926          208.00    637.71    112.99    134.90      0.00    139.89
3927            0.00      0.00   1072.00      0.00      0.00      0.00

[3928 rows x 6 columns]
month_year        CLV
0                0.00
1              401.90
2             2780.66
3             1150.80
4           121869.86
5              386.20
6             1760.96
7             5371.07
8              792.94
9             4196.01
10           29748.44
11            3822.90
12             942.34
13              92.72
14             918.98
15            1759.50
16             392.08
17            1468.12
18             430.15
19             988.71
20             253.05
21            6748.40
22             215.05
23             383.03
24             417.38
25             312.38
26            2595.24
27             134.10
28             670.65
29            5578.04
...               ...
3898          2058.09
3899          2232.49
3900          2527.10
3901           363.20
3902           793.52
3903            95.34
3904           342.92
3905          4314.72
3906           518.27
3907           103.30
3908          2274.03
3909          2338.60
3910          2128.57
3911           324.24
3912           149.48
3913           903.48
3914           801.51
3915            25.50
3916           138.90
3917           244.90
3918          2098.04
3919             0.00
3920           329.61
3921           110.38
3922           173.90
3923           180.60
3924            80.82
3925           176.60
3926          1929.93
3927          1837.28

[3928 rows x 1 columns]
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-197-44d25a827a36> in <module>
      2 print (X)
      3 print (y)
----> 4 X.iloc[:,:] = labelencoder_X.fit_transform(X.iloc[:,:])
      5 y.iloc[:,:1] = labelencoder_y.fit_transform(y.iloc[:,:1])
      6 plt.scatter(X_test, y_test, color='black')

/anaconda3/lib/python3.7/site-packages/sklearn/preprocessing/label.py in fit_transform(self, y)
    233         y : array-like of shape [n_samples]
    234         """
--> 235         y = column_or_1d(y, warn=True)
    236         self.classes_, y = _encode(y, encode=True)
    237         return y

/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in column_or_1d(y, warn)
    795         return np.ravel(y)
    796 
--> 797     raise ValueError("bad input shape {0}".format(shape))
    798 
    799 

ValueError: bad input shape (3928, 6)

Я пробовал несколько сценариев нарезки данных, но это не помогает.Возможно, что-то связано с размерами, и именно здесь мне нужна помощь.

1 Ответ

0 голосов
/ 19 февраля 2019

labelencoder_X.fit_transform функция, вероятно, возвращает новый объект (пустой массив или другой фрейм данных).Ошибка возникает, когда вы присваиваете возвращаемый объект тому же входу, используя iloc.

Вы можете попробовать:

X_transf = labelencoder_X.fit_transform(X)
y_transf = labelencoder_y.fit_transform(y)

или только имя переменной без iloc.

Надеюсь, это поможет.

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