我有這個使用線性回歸的評級預測模型
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 值的輸入,我期望將“我喜歡它”作為輸出,但它會引發錯誤,因為預期的輸出是一個字串,這是錯誤:ValueError: could not convert string to float: 'Bad'。如何使其能夠將字串作為輸出?
uj5u.com熱心網友回復:
嗨,那是因為 sckitlearn 或更確切地說機器學習標簽需要數字作為輸入,我不確定在這種情況下類是什么,但您可以使用sckitlearn中的 onehotencoder
from sklearn.preprocessing import OneHotEncoder
# 1. INSTANTIATE
enc = OneHotEncoder()
# 2. FIT
enc.fit(y)
# 3. Transform
onehotlabels = enc.transform(y).toarray()
onehotlabels.shape
或者您可以手動將其映射出您喜歡的任何方式(例如,Bad -> 0,Good -> 1)
uj5u.com熱心網友回復:
Linear Regression如果你有,你不能做 a Target feature as a Categorical D-Type。這是執行線性回歸的第一條規則,您應該具有連續目標特征,因為該y=mx c函式僅將數字作為輸入,并針對數字項測驗函式并預測數字項。
這就是為什么它被訓練但無法預測的原因。
您需要對目標特征進行編碼。請自學這些概念。
希望這可以幫助。
uj5u.com熱心網友回復:
您的標簽是分類的,其中回歸標簽應該是連續的數字。您可以考慮將其視為分類問題而不是回歸問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/452106.html
上一篇:為什么break陳述句在這種情況下不起作用(python)?[復制]
下一篇:無法更新python
