线性回归scikit中具有0个特征的值错误数组

数据挖掘 机器学习 scikit-学习 线性回归
2022-02-28 05:38:26

我的输入和输出数据写在一个 6xn 行列的 excel 文件中,我使用 pandas 读取它们

使用此代码:

from sklearn import linear_model
import os
import pandas as pd
import numpy as np
import openpyxl as pyx
import numpy as np
import matplotlib.pyplot as plt

path = r"E:\"
os.chdir( path )

data1 = pd.read_excel("input.xlsx", header=None,index=False)
data2 = pd.read_excel("target.xlsx", header=None,index=False)

# print df.head()

le= 20;lg=len(data1)
x_train=[];x_t=[];y_train=[];y_t=[];x_test=[];x_ts=[];y_test=[];y_ts=[];
for i in range(le):    
    x_t = data1.iloc[i,:]
    x_train.append(x_t)
    y_t = data2.iloc[i,:]
    y_train.append(y_t)
    if i > le :
        x_ts = data1.iloc[lg-i,:]
        x_test.append(x_ts)
        y_ts = data2.iloc[lg-i,:]
        y_test.append(y_ts)



ols = linear_model.LinearRegression()
model = ols.fit(x_train, y_train)

print (model.predict(x_test)[0:5]) 

我收到此错误:

文件“C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”,第 880 行,运行文件 execfile(文件名,命名空间)

文件“C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”,第 102 行,在 execfile exec(compile(f.read(), filename, 'exec'), namespace)

文件“E:/Scikit-Learn.py”,第 46 行,打印中 (model.predict(x_test)[0:5])

文件“C:\ProgramData\Anaconda3\lib\site-packages\sklearn\linear_model\base.py”,第 268 行,预测返回 self._decision_function(X)

文件“C:\ProgramData\Anaconda3\lib\site-packages\sklearn\linear_model\base.py”,第 251 行,在 _decision_function X = check_array(X, accept_sparse=['csr', 'csc', 'coo'] )

文件“C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\validation.py”,第 424 行,在 check_array 上下文中))

ValueError: 找到具有 0 个特征的数组 (shape=(1, 0)),而至少需要 1 个。

1个回答

该错误表明您输入的数组predict意味着shape=(1,0)它必须是一个空的可迭代对象。

通过查看您的代码,很容易看出原因。x_test开头是空的,在您的代码中,向其中添加内容的唯一方法是 if i > le但是由于您的循环for i in range(le)定义ilerangele-1