首页 > 解决方案 > 在 jupyter ntbk 中运行 reg.predict 时遇到问题说“ValueError”

问题描述

尝试在 python 中学习 sklearn。但是 jupyter ntbk 给出错误消息“ValueError: Expected 2D array, got scalar array instead: array=750. reshape your data or using array.reshape(-1, 1) if your data has a single feature or array.reshape( 1, -1) 如果它包含单个样本。" *但我已经使用 x.values.reshape(-1,1) 将 x 定义为二维数组

您可以在此处找到错误代码的 CSV 文件和屏幕截图 -> https://github.com/CaptainRD/CSV-for-StackOverflow


    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    sns.set()

    from sklearn.linear_model import LinearRegression
    data = pd.read_csv('1.02. Multiple linear regression.csv')
    data.head()
    x = data[['SAT','Rand 1,2,3']]
    y = data['GPA']
    reg = LinearRegression()
    reg.fit(x,y)r2 = reg.score(x,y)
    n = x.shape[0]
    p = x.shape[1]

    adjusted_r2 = 1-(1-r2)*(n-1)/(n-p-1)
    adjusted_r2
    reg.predict(1750)

标签: pythonpandasmachine-learningscikit-learnlinear-regression

解决方案


正如您在代码中看到的,您的 x 有两个变量,SATRand 1,2,3。这意味着,您需要为您的预测方法提供二维输入。例子:

reg.predict([[1750, 1]])

返回:

>>> array([1.88])

您正面临此错误,因为您没有提供第二个值(对于Rand 1,2,3变量)。请注意,如果此变量不重要,则应将其从 x 数据中删除。


推荐阅读