我是机器学习的新手,拥有IMDb电影数据集(约14000个单位)。我试图使用支持向量回归模型预测imdb电影评级。对于预测,我使用'ratingCount'列。我使用matplotlib绘制了'ratingCount'(X)与'imdbRating'(y)的简单绘图,并决定使用支持向量回归绘制SVR曲线。我得到的曲线奇怪而奇怪,好像它在数据图上一次又一次地重复。我期待一条平滑的SVR曲线适合数据。 。 请让我知道问题是什么,以及在附图中获得的这种奇怪类型的曲线的原因是什么。据我所知,我的python代码简单而干净。 。还有一件事 - 当我使用多项式回归模型算法时,我也得到了一条不规则的重复曲线。我期待一条平滑的曲线,但我也得到了奇怪的多项式曲线。
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
imdb_clean =pd.read_csv(r'E:\pythON\DataSci\GitH\IMDB\Clean_IMDB_3.csv')
X = imdb_clean.iloc[:, 1:2] .values
y = imdb_clean.iloc[: ,0:1].values
from sklearn.preprocessing import StandardScaler
scale_x = StandardScaler()
scale_y = StandardScaler()
X = scale_x.fit_transform(X)
y = scale_y.fit_transform(y)
from sklearn.svm import SVR
svr_regressor = SVR(kernel='rbf')
svr_regressor.fit(X, y)
# normal plot
plt.figure(figsize=(20,10))
plt.scatter(X, y, color='blue')
plt.show()
# svr fitted plot
plt.figure(figsize=(20,10))
plt.scatter(X, y, color='blue')
plt.plot(X, svr_regressor.predict(X), color='black')
plt.show()
答案 0 :(得分:1)
Matplotlib按照给定的顺序绘制点。由于它们不是按升序排列的,因此你会在情节中得到奇怪的行为。您可以对数据框进行排序:
...
imdb_clean =pd.read_csv(r'E:\pythON\DataSci\GitH\IMDB\Clean_IMDB_3.csv')
imdb_clean = imdb_clean.sort_values(by=imdb_clean.columns[1])
...
或者将排序后的值放在单独的变量中,类似于this thread。