获得一个奇怪/奇怪的重复SVR图而不是单个平滑的SVR曲线

时间:2018-03-29 00:56:50

标签: python-3.x machine-learning

我是机器学习的新手,拥有IMDb电影数据集(约14000个单位)。我试图使用支持向量回归模型预测imdb电影评级。对于预测,我使用'ratingCount'列。我使用matplotlib绘制了'ratingCount'(X)与'imdbRating'(y)的简单绘图,并决定使用支持向量回归绘制SVR曲线。我得到的曲线奇怪而奇怪,好像它在数据图上一次又一次地重复。我期待一条平滑的SVR曲线适合数据。 without SVRwith 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()

1 个答案:

答案 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