当新的观测值被填充时,需要自动更新训练集。
我已经使用Python中的sklearn库使用随机梯度下降算法。我将数据帧转换为数组,但转换时仍然遇到问题。我执行以下操作:
import pandas as pd
from pandas import DataFrame
from sklearn.linear_model import SGDClassifier
#Collecting Numeric data
data = pd.read_csv('/home/system/Documents/Heena/Regression/Data.csv')
df = pd.DataFrame(data, columns = ['years_of_exp', 'company', 'location', 'education','score'])
xSGD = df[['years_of_exp', 'company', 'location', 'education']]
ySGD = df['score']
#Conversion of dataframe to numpy array
X = np.asarray(xSGD)
Y = np.asarray(ySGD)
clf = SGDClassifier(loss="hinge", penalty="l2", max_iter=5)
clf.fit(xSGD,ySGD)
错误:我希望它的输出必须适合模型。但实际输出是
ValueError.
File "/home/system/anaconda3/lib/python3.7/site-packages/sklearn/utils/multiclass.py", line 96, in unique_labels
raise ValueError("Unknown label type: %s" % repr(ys))
ValueError: Unknown label type: (array([1. , 2. , 3. , 3.8 , 4. , 4.25, 5. ]),)
从堆栈跟踪中,我看到了两个问题:
-
ySGD
是一个元组,但它应该是一个 numpy 数组(可能是该元组的第一个也是唯一的元素) - 您使用的是
SGDClassifier
,但标签是实数(在数据帧中称为"分数")。这表明您的任务实际上是一个回归问题,因此您应该改用SGDRegressor