我有这个简单的决策树模型和预处理
merged_df = pd.read_excel(r'C:\Users\Kiwi\Downloads\data set balance.xlsx')
list_object = ['NAMA', 'TARGET', 'NIM']
merged_df['NIM'] = merged_df['NIM'].apply(str)
num_columns = merged_df.select_dtypes(include=['float64']).columns
cat_columns = merged_df.select_dtypes(include=['object']).drop(list_object, axis=1).columns
numeric_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='mean')),
('scaler', StandardScaler())])
categorical_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='most_frequent')),
('label', OneHotEncoder(handle_unknown='ignore'))])
preprocessor = ColumnTransformer(
transformers=[
('num', numeric_transformer, num_columns),
('cat', categorical_transformer, cat_columns)])
X = merged_df.drop(['TARGET','NIM','NAMA','NO.'],1)
y = merged_df['TARGET']
X_train = X
y_train = y
rf = Pipeline(steps=[('preprocessor', preprocessor),
('classifier',tree.DecisionTreeClassifier(
class_weight='balanced', criterion='entropy'))])
rf.fit(X_train, y_train)
print('fitted')
X_test = {'Pendidikan Kewarganegaraan': 'C',
'Pendidikan Agama dalam TIK': 'A-',
'Kepemimpinan dan Pengembangan Karakter': 'A-',
'Bahasa Indonesia untuk TI': 'B-',
'Matematika Diskrit': 'A-',
'Pengantar Multimedia': 'A',
'Algoritma dan Pemrograman': 'B',
'Rekayasa Perangkat Lunak': 'A',
'Jaringan Komputer dan Komunikasi': 'A-',
'Aljabar Linier': 'A-',
'Struktur Data': 'A-',
'Sistem Basis Data': 'B',
'IP_smt1': 2.78,
'IP_smt2': 3.16,
'IP_smt3': 2.85,
'IP_smt4': 3.41,
'IP_smt5': 2.83,
'IP_smt6': 3.37,
'IP_smt7': 3.6,
'IP_s8': 3.16,
'IPK': 3.145
}
pred = rf.predict([X_test])
我试图将一行字典(X_测试)传递给模型,但它返回的错误是
ValueError: Expected 2D array, got 1D array instead:Reshape your data either
using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
我不确定是否有可能做到这一点,但根据文档,predict接受类似数组的输入,但无法对dict进行重塑。有没有办法解决这个问题,或者这是不可能的
当前传递
rf.predict([X_test])
输入的方式本质上是说[X_test]
是一个包含一行的列表,该行就是您的字典X_test
。如果只想将字典的值传递到rf.predict()
,可以迭代X_test
的键并附加到列表中编辑:我犯了一个错误,在np.reformate()方法中遗漏了括号。已更新以包含正确的语法
我通过简单地在X_测试中添加括号修复了这个问题
然后我把它变成
dataframe
并通过它来预测。它起作用了
相关问题 更多 >
编程相关推荐