如何使用线性回归Python将字符串作为Y输出



我有这个使用线性回归的评级预测模型

status = pd.DataFrame({'rating': [10.5,20.30,30.12,40.24,50.55,60.6,70.2], 'B': ['Bad','Not bad','Good','I like it','Very good','The best','Deserve an oscar']})
x = status.iloc[:,:-1].values
y = status.iloc[:,-1].values
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,train_size=0.4,random_state=0)
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(x,y)
input = 40.24
lr.predict([[input]])

因此,我有40.24作为X值的输入,我期望"I like it"作为输出,但它却抛出了错误,因为期望的输出是一个字符串,这是错误:ValueError: could not convert string to float: 'Bad'。如何使它能够以字符串作为输出?

嗨,这是因为sckitslearn或机器学习标签需要数字作为输入,我不确定在这种情况下类是什么,但你可以使用sckitsLearn 中的onehotencoder

也要将其更改为逻辑回归

from sklearn.preprocessing import OneHotEncoder
from sklearn.linear_model import LogisticRegression
# 1. INSTANTIATE
enc = OneHotEncoder()
# 2. FIT
enc.fit(y)
# 3. Transform
onehotlabels = enc.transform(y).toarray()
onehotlabels.shape
clf = LogisticRegression(random_state=0).fit(x, onehotlabels)

或者你可以手动绘制出你喜欢的任何方式(例如坏->0,好->1(

如果有Target feature as a Categorical D-Type,则不能执行Linear Regression。这是执行线性回归的第一条规则,您应该具有连续目标功能,因为y=mx+c函数只接受数字作为输入,并根据数字项测试函数并预测数字项。

这就是为什么它经过训练但无法预测。

您需要对目标功能进行编码。请自学这些概念。

希望这能有所帮助。

您的标签是分类的,其中回归标签应该是连续的数字。您可以考虑将其视为一个分类问题,而不是回归问题。

最新更新