我正在使用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.
答案 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数组(即单个值,这是不可切片的)而不是一维数组。