我刚开始学习机器学习,并且有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()
回答:
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])...
或者将排序后的值存放在单独的变量中,类似于这个线程中所述的方法。