如何在 scikit 线性回归的预测函数中传递 float 参数?

How to pass float argument in predict function of scikit linear regression?

我正在使用 scikit linear regression - 单变量根据 x 预测 y。参数是 float 数据类型。我如何将浮点数转换为 numpy 数组来预测输出?

import matplotlib.pyplot as plt
import pandas
import numpy as np
from sklearn import linear_model
import sys

colnames = ['charge_time', 'running_time']
data = pandas.read_csv('trainingdata.txt', names=colnames)
data = data[data.running_time < 8]
x = np.array(list(data.charge_time))
y = np.array(list(data.running_time))

clf = linear_model.LinearRegression() # Creating a Linear Regression Modal
clf.fit(x[:,np.newaxis], y) # Fitting x and y array as training set
data = float(sys.stdin.readline()) # Input is Float e.g. 4.8
print clf.predict(data[:,np.newaxis]) # As per my understanding parameter should be in 1-D array. 

首先提一个与你的问题没有直接关系的建议:
你不需要做 x = np.array(list(data.charge_time)),你可以直接调用 x = np.array(data.charge_time) 或者,更好的是,x = data.charge_time.values 直接 returns 底层的 ndarray.

我也不清楚为什么要使用 np.newaxis.

向输入数组添加维度

关于您的问题,predict 需要一个类似数组的参数:可以是列表、numpy 数组或其他。

所以你应该可以做到 data = np.array([float(sys.stdin.readline())])。需要将浮点值放入列表 ([]) 中,因为如果没有它,numpy 将创建一个 0-d 数组(即单个值,不可分片)而不是 1-d 数组。