azure011328

导航

 
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载 iris 数据集
iris = load_iris()
X, y = iris.data, iris.target

# 使用 train_test_split 函数留出 1/3 的样本作为测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42, stratify=y)

from sklearn.cluster import KMeans

# 创建 KMeans 模型,设置类别数为 3
kmeans = KMeans(n_clusters=3, random_state=42)

# 使用训练集训练模型
kmeans.fit(X_train, y_train)

from sklearn.model_selection import cross_val_score
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# 定义一个函数来评估模型性能
def evaluate_model(X, y):
    kmeans = KMeans(n_clusters=3, random_state=42)
    scores = cross_val_score(kmeans, X, y, cv=5, scoring='f1_macro')
    return scores.mean()

# 评估模型性能
f1_macro_score = evaluate_model(X_train, y_train)
print(f"F1 Macro Score: {f1_macro_score}")

# 使用训练好的模型对测试集进行预测
y_pred = kmeans.predict(X_test)

# 计算准确度、精度、召回率和 F1
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')

print(f"Accuracy: {accuracy}")
print(f"Precision: {precision}")
print(f"Recall: {recall}")
print(f"F1 Score: {f1}")

 

posted on 2024-12-13 10:53  淮竹i  阅读(11)  评论(0)    收藏  举报