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

时间:2015-04-28 08:43:24

标签: python numpy scikit-learn linear-regression

我正在使用scikit linear regression - 单个变量来预测x中的y。参数是float数据类型。如何将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. 

1 个答案:

答案 0 :(得分:2)

首先,建议与您的问题没有直接关系:
您无需执行x = np.array(list(data.charge_time)),您可以直接调用x = np.array(data.charge_time),或者甚至更好地x = data.charge_time.values直接返回基础ndarray。

我也不清楚为什么要使用np.newaxis为输入数组添加维度。

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

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