, как следует из названия, я пытаюсь эмулировать несколько функций регрессии с сайта Scikit Learns (с моими собственными данными) и у меня возникают некоторые проблемы при построении моих результатов.
Код акции: https://scikit -learn.org / stable / auto_examples / svm / plot_svm_regression.html
Моя проблема: моя фигура строит несколько линий регрессии (см.цифры ниже).
In: #select features
feature_cols = ['avg_r']
#x def
X= df_s[feature_cols]
X= df_s[['avg_r']]
print("X type", type(X))
print("X shape", X.shape)
#y def
y = df_s['sales']
y = df_s.sales
print("y type", type(y))
print("y shape",y.shape)
Out: X type <class 'pandas.core.frame.DataFrame'>
X shape (1105, 1)
y type <class 'pandas.core.series.Series'>
y shape (1105,)
In: X.head()
Out: avg_r
0 470.500000
1 717.750000
2 603.416667
3 566.416667
4 778.333333
In: y.head()
Out: 0 2412
1 1308
2 2037
3 2052
4 1553
Name: sales, dtype: int64
In: #split data into training and test subsets
X_train, X_test, y_train, y_test = train_test_split(X,y)
print("X_train", X_train.shape)
print("X_test", X_test.shape)
print("y_train", y_train.shape)
print("y_train", y_test.shape)
Out: X_train (828, 1)
X_test (277, 1)
y_train (828,)
y_train (277,)
In: #fit regression models
svr_rbf = SVR(kernel='rbf', C=1e4, gamma=0.0025)
svr_lin = SVR(kernel='linear', C=1e3)
#svr_poly = SVR(kernel='poly', C=1e3, degree=2)
y_rbf = svr_rbf.fit(X_train, y_train).predict(X_test)
y_lin = svr_lin.fit(X_train, y_train).predict(X_test)
#y_poly = svr_poly.fit(X_train, y_train).predict(X_test)
Out: blank
In: # Look at the results
lw = 2
plt.scatter(X_train, y_train, color='darkorange', label='sales')
plt.plot(X_test, y_rbf, color='navy', lw=lw, label='RBF model')
#plt.plot(X_test, y_lin, color='c', lw=lw, label='Linear model')
#plt.plot(X_test.avg_r, y_poly, color='cornflowerblue', lw=lw,
label='Polynomial model')
plt.xlabel('rank')
plt.ylabel('sales')
plt.title('Support Vector Regression')
plt.legend()
plt.show()
Out:
![enter image description here](https://i.stack.imgur.com/kCOKA.png)
Если я вместо этого построю график регрессий как разброс, я получу это:
In: # Look at the results
lw = 2
plt.scatter(X_train, y_train, color='darkorange', label='sales')
plt.scatter(X_test, y_rbf, color='navy', lw=lw, label='RBF model')
#plt.plot(X_test, y_lin, color='c', lw=lw, label='Linear model')
#plt.plot(X_test.avg_r, y_poly, color='cornflowerblue', lw=lw,
label='Polynomial model')
plt.xlabel('rank')
plt.ylabel('sales')
plt.title('Support Vector Regression')
plt.legend()
plt.show()
Out:
![enter image description here](https://i.stack.imgur.com/AVr5w.png)