1. 分类任务:鸢尾花分类(K近邻算法)

# 导入所需库

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

from sklearn.neighbors import KNeighborsClassifier

from sklearn.metrics import accuracy_score, classification_report

 

# 加载数据集

iris = load_iris()

X, y = iris.data, iris.target # X: 特征, y: 标签

 

# 划分训练集和测试集(80%训练,20%测试)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

 

# 创建K近邻分类器(K=3)

knn = KNeighborsClassifier(n_neighbors=3)

 

# 训练模型

knn.fit(X_train, y_train)

 

# 预测测试集

y_pred = knn.predict(X_test)

 

# 评估模型

print("准确率:", accuracy_score(y_test, y_pred))

print("分类报告:\n", classification_report(y_test, y_pred, target_names=iris.target_names))

 

2. 回归任务:波士顿房价预测(线性回归)

# 导入所需库

from sklearn.datasets import load_boston

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LinearRegression

from sklearn.metrics import mean_squared_error, r2_score

 

# 加载数据集

boston = load_boston()

X, y = boston.data, boston.target # X: 房屋特征, y: 房价

 

# 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

 

# 创建线性回归模型

lr = LinearRegression()

 

# 训练模型

lr.fit(X_train, y_train)

 

# 预测测试集

y_pred = lr.predict(X_test)

 

# 评估模型

print("均方误差 (MSE):", mean_squared_error(y_test, y_pred))

print("决定系数 (R²):", r2_score(y_test, y_pred))

 

 

3. 聚类任务:手写数字聚类(K均值算法)

# 导入所需库

from sklearn.datasets import load_digits

from sklearn.cluster import KMeans

import matplotlib.pyplot as plt

 

# 加载手写数字数据集

digits = load_digits()

X = digits.data # 每个样本为8x8像素的图像展平为64维向量

 

# 使用K均值聚类(K=10)

kmeans = KMeans(n_clusters=10, random_state=42)

kmeans.fit(X)

 

# 可视化聚类中心

cluster_centers = kmeans.cluster_centers_.reshape(10, 8, 8)

fig, axes = plt.subplots(2, 5, figsize=(8, 3))

for ax, center in zip(axes.flat, cluster_centers):

    ax.imshow(center, cmap='gray')

    ax.axis('off')

plt.suptitle("KMeans Cluster Centers (Digits)")

plt.show()

 

4. 分类任务:文本分类(朴素贝叶斯)

 

# 导入所需库

from sklearn.datasets import fetch_20newsgroups

from sklearn.feature_extraction.text import TfidfVectorizer

from sklearn.naive_bayes import MultinomialNB

from sklearn.pipeline import make_pipeline

 

# 加载数据集(仅选取4个类别)

categories = ['alt.atheism', 'talk.religion.misc', 'comp.graphics', 'sci.space']

newsgroups = fetch_20newsgroups(subset='train', categories=categories)

X_train, y_train = newsgroups.data, newsgroups.target

 

# 构建文本分类流水线(TF-IDF向量化 + 朴素贝叶斯)

model = make_pipeline(TfidfVectorizer(), MultinomialNB())

model.fit(X_train, y_train)

 

# 测试新样本

test_samples = [

    "God is love. I believe in God.",

    "Quantum physics is fascinating. Light behaves like a wave and a particle.",

]

predictions = model.predict(test_samples)

print("预测类别:", predictions)

 

5、 降维与可视化:手写数字降维(PCA + t-SNE)

 

# 导入所需库

from sklearn.datasets import load_digits

from sklearn.decomposition import PCA

from sklearn.manifold import TSNE

import matplotlib.pyplot as plt

 

# 加载手写数字数据集

digits = load_digits()

X, y = digits.data, digits.target

 

# PCA降维到2D

pca = PCA(n_components=2)

X_pca = pca.fit_transform(X)

 

# t-SNE降维到2D

tsne = TSNE(n_components=2, random_state=42)

X_tsne = tsne.fit_transform(X)

 

# 可视化

fig, axes = plt.subplots(1, 2, figsize=(10, 4))

axes[0].scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='tab10', s=10)

axes[0].set_title("PCA (2D)")

axes[1].scatter(X_tsne[:, 0], X_tsne[:, 1], c=y, cmap='tab10', s=10)

axes[1].set_title("t-SNE (2D)")

plt.show()

 

关键点说明

 

数据预处理:

使用  StandardScaler  或  MinMaxScaler  对数据进行标准化/归一化。

文本数据需用  TfidfVectorizer  转换为数值特征。

 

模型选择:

分类任务: KNeighborsClassifier 、 SVC 、 MultinomialNB 。

 

回归任务: LinearRegression 、 RandomForestRegressor 。

聚类任务: KMeans 、 DBSCAN 。

 

评估指标:

分类:准确率、F1分数、混淆矩阵。

回归:均方误差 (MSE)、R²、MAE。

 

可视化:

使用  matplotlib  绘制聚类中心、降维结果、混淆矩阵等。

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐