from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
import numpy as np
import random
# 1.读入数据
iris = load_iris()
X = iris.data
y = iris.target
names = iris.target_names # ['setosa', 'versicolor', 'virginica']
# 2.随机洗牌(固定随机种子)
random.seed(42)
idx = list(range(len(X))) # 创建索引列表
random.shuffle(idx) # 将索引列表随机打乱顺序
X = X[idx]
y = y[ idx]
# 3.划分训练集和测试集
n = int(input()) # 测试集取最后n个
X_train, X_test = X[:-n], X[-n:]
y_train = y[:-n]
# 4.训练模型
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)
# 5.预测
y_pred = model.predict(X_test)
y_prob = model.predict_proba(X_test)# shape:(n, 3)
for i in range(len(y_pred)):
print(f'{iris.target_names[y_pred[i]]} {np.max(y_prob[i]):.2f}')