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}')