diff --git a/function.py b/function.py index 185680b..13f23fe 100644 --- a/function.py +++ b/function.py @@ -1,7 +1,7 @@ import numpy as np +from sklearn.model_selection import train_test_split, cross_val_score from sklearn.ensemble import RandomForestClassifier from sklearn.preprocessing import PolynomialFeatures, StandardScaler -from sklearn.model_selection import train_test_split, cross_val_score id = "202210423104" name = "张钦诚" @@ -31,17 +31,16 @@ def preprocess_data(X): return X_poly def train_logreg(X, y): - X_processed = preprocess_data(X) # 预处理训练数据 model = RandomForestClassifier(n_estimators=113, max_depth=10, random_state=42) + X_processed = preprocess_data(X) # 预处理训练数据 model.fit(X_processed, y) return model # 返回训练好的模型 def predict_logreg(model, X): X_processed = preprocess_data(X.reshape(1, -1)) # 预处理单个测试样本 - return model.predict(X_processed)[0] # 预测并返回结果 + return model.predict(X_processed)[0] # 返回预测结果 if __name__ == "__main__": - # 加载数据 X, y = load_data("./data/horse-colic.data") # 划分数据集 @@ -53,12 +52,13 @@ if __name__ == "__main__": # 预测 y_pred = [] for sample in X_test: - y_pred.append(predict_logreg(model, sample)) + y_pred.append(predict_logreg(model, sample)) # 逐个样本预测 # 计算准确率 accuracy = np.mean(y_pred == y_test) print(f"测试出的正确率: {accuracy * 100:.2f}%") # 交叉验证 - cv_scores = cross_val_score(model, preprocess_data(X_train), y_train, cv=5) + X_train_processed = preprocess_data(X_train) # 预处理训练数据 + cv_scores = cross_val_score(model, X_train_processed, y_train, cv=5) print(f"交叉验证准确率: {np.mean(cv_scores) * 100:.2f}%")