如何解决输入数据不能是列表XGBoost
这是我的代码。
# grab the `h` in `$env:path`
(dir env:pat?).Name.GetEnumerator()|select -Last 1
# reflect against another existing [char] to get the type
$g = 'g'|% ToC?ar ($null)
0x48 -as $g.GetType()
# generate char range between G and I,filter out G and I (pwsh >6.1 only)
'G'..'I'|?{$_-notin'G','I'}
我得到的错误是import pandas as pd
import numpy as np
import json
from xgboost import XGBRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score,mean_squared_error
from sklearn.preprocessing import StandardScaler
training_data = pd.read_csv('/Users/aus10/Desktop/MLB_Data/Test_Training_Data/MLB_Training_Data.csv')
df_model = training_data.copy()
scaler = StandardScaler()
features = [['OBS','Runs']]
for feature in features:
df_model[feature] = scaler.fit_transform(df_model[feature])
test_data = pd.read_csv('/Users/aus10/Desktop/MLB_Data/Test_Training_Data/Test_Data.csv')
X = training_data.iloc[:,1] #independent columns
y = training_data.iloc[:,-1] #target column
X = X.values.reshape(-1,1)
results = []
# fit final model
model = XGBRegressor(objective="reg:squarederror",random_state=42)
model.fit(X,y)
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=4)
y_train_pred = model.predict(X_train)
y_test_pred = model.predict(X_test)
model.fit(X_train,y_train)
y_pred = model.predict(X_test)
print('MSE train: %.3f,test: %.3f' % (
round(mean_squared_error(y_train,y_train_pred),2),round(mean_squared_error(y_test,y_test_pred),2)
))
print('R^2 train: %.3f,test: %.3f' % (r2_score(y_train,r2_score(y_test,y_test_pred)))
# define one new data instance
index = 0
count = 0
while count < len(test_data):
team = test_data.loc[index].at['Team']
OBS = test_data.loc[index].at['OBS']
Xnew = [[ OBS ]]
# make a prediction
ynew = model.predict(Xnew)
# show the inputs and predicted outputs
results.append(
{
'Team': team,'Runs': (round(ynew[0],2))
})
index += 1
count += 1
sorted_results = sorted(results,key=lambda k: k['Runs'],reverse=True)
df = pd.DataFrame(sorted_results,columns=[
'Team','Runs'])
writer = pd.ExcelWriter('/Users/aus10/Desktop/MLB_Data/ML/Results/Projected_Runs_XGBoost.xlsx',engine='xlsxwriter') # pylint: disable=abstract-class-instantiated
df.to_excel(writer,sheet_name='Sheet1',index=False)
df.style.set_properties(**{'text-align': 'center'})
pd.set_option('display.max_colwidth',100)
pd.set_option('display.width',1000)
writer.save()
来自TypeError: Input data can not be a list.
的数据是带有小组名称和obs的csv,它是浮点数
像这样test_data
我所见过的每种解决方法都是像我一样将其放入二维数组中-NYY 0.324
,
但我仍然遇到错误。
我需要对进入的test_data做其他事情吗?我尝试使用Xnew = [[ OBS ]]
,但这也没有解决。
解决方法
您需要转换Xnew
Xnew = np.array(Xnew).reshape((1,-1))
这应该有效
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。