注意题目要求设置随机种子42,参数max_iter=200即可。
要求使用LogisticRegression(逻辑回归)。
代码如下:
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
import numpy as np
import random
# 设置随机种子,保证结果一致
random.seed(42)
iris = load_iris()
X = iris.data
y = iris.target
i = list(range(len(X)))
random.shuffle(i)
X_shuffled = X[i]
y_shuffled = y[i]
n = int(input())
# 直接截取最后n个样本作为测试集
X_train = X_shuffled[:-n]
y_train = y_shuffled[:-n]
X_test = X_shuffled[-n:]
y_test = y_shuffled[-n:]
model = LogisticRegression(max_iter=200) # 增加max_iter以避免收敛
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
y_prob = model.predict_proba(X_test)
for i in range(n):
print(f'{iris.target_names[y_pred[i]]} {np.max(y_prob[i]):.2f}')