AI大模型应用开发-工具使用:Sklearn 库(调用现成算法,不用自己写)
用 Sklearn 快速实现 KNN、线性回归、逻辑回归等基础算法
·
一、 前置准备:pip 安装 Sklearn 库
Sklearn(全称scikit-learn)是 Python 机器学习入门必备库,封装了所有经典入门算法,无需 Anaconda,直接用pip安装即可。
步骤 1:打开 Windows cmd(管理员身份更佳)
Win+R 输入cmd,回车打开命令提示符。
步骤 2:输入安装命令(国内镜像源,避免下载超时)
# 安装Sklearn核心库
pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple
# 补充:Sklearn依赖Numpy和Scipy,之前已安装过无需重复安装;若未安装,会自动附带安装
步骤 3:验证安装成功
cmd 中输入以下命令,无报错即说明安装成功:
python
# 进入Python交互环境
python
# 导入Sklearn库,无报错即成功
import sklearn
# 查看版本(可选,确认安装有效)
print(sklearn.__version__)
# 退出Python交互环境
exit()
小白避坑
- 安装报错「TimeoutError」:网络波动导致,重新执行安装命令即可。
- 提示 “缺少依赖”:先升级
pip,命令:python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple,再重新安装 Sklearn。 - 导入报错「No module named'sklearn'」:安装未成功,检查 cmd 是否以管理员身份运行,或重新安装。
二、 Sklearn 核心认知:小白必懂的 3 个关键点
- Sklearn 是 “算法工具包”:不用自己手写 KNN、线性回归的复杂代码,库中已经封装好现成的算法类,直接调用即可,就像 “拿现成的工具干活,不用自己打铁造工具”。
- 统一的使用流程:所有算法的调用步骤高度一致,掌握一套流程,就能迁移到所有算法,小白极易上手。
- 依赖基础数据库:Sklearn 本身不处理原始数据,需要配合
Numpy(处理数组)、Pandas(处理表格)准备数据,对应你之前学过的知识点,三者协同工作。
三、 Sklearn 核心使用流程(通用模板,所有算法都适用)
小白只需记住5 步核心流程,就能快速调用任何 Sklearn 中的入门算法,这里以 “通用模板” 呈现,后续可直接套用到 KNN、线性回归、逻辑回归中。
通用 5 步流程
python
# 步骤1:导入所需库(核心:算法类+数据处理库)
import numpy as np
# 按需导入算法类(比如KNN、线性回归、逻辑回归)
from sklearn.xxx import XxxAlgorithm
# 步骤2:准备数据(特征数据X + 标签数据y)
# X:特征数据,必须是「二维数组」(行=样本数,列=特征数)
# y:标签数据,一维数组即可(对应每个样本的结果)
X = np.array([[样本1特征1, 样本1特征2], [样本2特征1, 样本2特征2]])
y = np.array([样本1标签, 样本2标签])
# 步骤3:创建算法模型实例(可设置简单参数)
model = XxxAlgorithm(参数1=值1, 参数2=值2)
# 步骤4:训练模型(核心方法:fit(),喂给模型数据让它学习)
model.fit(X, y)
# 步骤5:使用模型(核心方法:predict(),预测新数据;可选:score(),评估模型准确率)
# 预测新数据(新数据必须也是二维数组)
new_data = np.array([[新样本特征1, 新样本特征2]])
pred_result = model.predict(new_data)
# 评估模型(可选,针对训练数据或测试数据)
model_score = model.score(X, y)
核心方法解读(小白必记)
fit():训练模型的核心方法,相当于 “给算法喂数据,让它记住规律”,所有算法都必须先调用fit(),才能进行后续预测。predict():预测新数据的核心方法,相当于 “用训练好的算法,判断未知数据的结果”,输入必须是二维数组(即使只有一个新样本)。score():快速评估模型效果的方法,返回 0-1 之间的分数,越接近 1 说明模型拟合效果越好(分类算法返回准确率,回归算法返回拟合优度)。
四、 Sklearn 实操:3 个经典算法的统一调用(直接复制运行)
结合之前学的 KNN、线性回归、逻辑回归,用 Sklearn 的通用流程实现,小白可以直观看到 “流程统一,仅需更换算法类”。
实操说明
- 新建
sklearn_demo.py文件,粘贴以下代码。 - 无需修改参数,直接用
python sklearn_demo.py运行。 - 重点观察 “不同算法的导入、模型创建” 差异,以及 “通用流程的一致性”。
python
# === 前置:导入所有需要的库 ===
import numpy as np
from sklearn.neighbors import KNeighborsClassifier # KNN分类算法
from sklearn.linear_model import LinearRegression # 线性回归算法
from sklearn.linear_model import LogisticRegression # 逻辑回归算法
import matplotlib.pyplot as plt
# 解决Matplotlib中文乱码
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# === 示例1:Sklearn调用KNN(分类问题) ===
print("=" * 50)
print("示例1:KNN算法(判断性别)")
# 步骤2:准备数据
X_knn = np.array([[155, 45], [160, 50], [165, 55], [175, 70], [180, 75],
[158, 48], [162, 52], [170, 65], [178, 72], [182, 80]])
y_knn = np.array([0, 0, 0, 1, 1, 0, 0, 1, 1, 1]) # 0=女生,1=男生
# 步骤3:创建KNN模型
knn_model = KNeighborsClassifier(n_neighbors=3)
# 步骤4:训练模型
knn_model.fit(X_knn, y_knn)
# 步骤5:预测与评估
new_person = np.array([[168, 60]])
knn_pred = knn_model.predict(new_person)
knn_score = knn_model.score(X_knn, y_knn)
knn_result = "男生" if knn_pred[0] == 1 else "女生"
print(f"新同学(168, 60)预测性别:{knn_result}")
print(f"KNN模型准确率:{knn_score:.2f}")
# === 示例2:Sklearn调用线性回归(回归问题) ===
print("\n" + "=" * 50)
print("示例2:线性回归算法(预测房价)")
# 步骤2:准备数据
X_lr = np.array([50, 60, 70, 80, 90, 100]).reshape(-1, 1)
y_lr = np.array([100, 120, 140, 160, 180, 200])
# 步骤3:创建线性回归模型
lr_model = LinearRegression()
# 步骤4:训练模型
lr_model.fit(X_lr, y_lr)
# 步骤5:预测与评估
new_area = np.array([[110]])
lr_pred = lr_model.predict(new_area)
lr_score = lr_model.score(X_lr, y_lr)
print(f"110㎡房屋预测房价:{lr_pred[0]:.2f} 万元")
print(f"线性回归模型拟合优度:{lr_score:.2f}")
# 可视化拟合结果(可选)
plt.figure(figsize=(8, 4))
plt.scatter(X_lr, y_lr, color="red", label="真实房价")
plt.plot(X_lr, lr_model.predict(X_lr), color="blue", label="拟合直线")
plt.xlabel("房屋面积(㎡)")
plt.ylabel("房价(万元)")
plt.legend()
plt.title("线性回归房价拟合结果")
plt.savefig("sklearn_linear_regression.png")
plt.show()
# === 示例3:Sklearn调用逻辑回归(二分类问题) ===
print("\n" + "=" * 50)
print("示例3:逻辑回归算法(判断是否及格)")
# 步骤2:准备数据
X_log = np.array([1, 2, 3, 4, 5, 6, 7, 8]).reshape(-1, 1)
y_log = np.array([0, 0, 0, 0, 1, 1, 1, 1]) # 0=不及格,1=及格
# 步骤3:创建逻辑回归模型
log_model = LogisticRegression()
# 步骤4:训练模型
log_model.fit(X_log, y_log)
# 步骤5:预测与评估
new_time = np.array([[6.5]])
log_pred = log_model.predict(new_time)
log_prob = log_model.predict_proba(new_time)
log_score = log_model.score(X_log, y_log)
log_result = "及格" if log_pred[0] == 1 else "不及格"
print(f"复习6.5小时,预测结果:{log_result}")
print(f"不及格概率:{log_prob[0][0]:.2f},及格概率:{log_prob[0][1]:.2f}")
print(f"逻辑回归模型准确率:{log_score:.2f}")
运行结果解读
- 终端依次输出 3 个算法的预测结果和模型评分,全部接近 1.0,说明模型拟合效果良好。
- 弹出线性回归拟合图表,保存为
sklearn_linear_regression.png,直观看到拟合直线效果。 - 重点体会:3 个算法的
fit()、predict()、score()用法完全一致,仅需更换算法类和参数,这就是 Sklearn 的便捷性。
五、 Sklearn 小白常用技巧与避坑
1. 核心技巧:数据格式要求(重中之重)
- 特征数据
X必须是二维数组:即使只有 1 个特征、1 个样本,也要用np.array([[x]])(双层方括号),不能用一维数组np.array([x])。- 正确写法:
new_data = np.array([[168, 60]]) - 错误写法:
new_data = np.array([168, 60])(会报错ValueError: Expected 2D array, got 1D array instead)
- 正确写法:
- 标签数据
y是一维数组即可:无需额外变形,直接np.array([0, 1, 0])。
2. 常用技巧:拆分训练集和测试集
小白入门时可以用全量数据训练,但实际项目中,需要拆分 “训练集”(教模型)和 “测试集”(测模型),Sklearn 提供了现成工具:
python
# 导入拆分工具
from sklearn.model_selection import train_test_split
# 拆分数据(test_size=0.2 表示20%数据作为测试集)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 用训练集训练模型
model.fit(X_train, y_train)
# 用测试集评估模型(更客观)
test_score = model.score(X_test, y_test)
3. 避坑指南
- 报错「ValueError: Expected 2D array, got 1D array instead」:特征数据
X是一维数组,用reshape(-1, 1)变形为二维数组即可(如X = X.reshape(-1, 1))。 - 模型评分过低:数据量太少(小白示例仅作演示),实际项目中需要更多样本数据,或调整算法参数。
- 导入报错「No module named'sklearn'」:Sklearn 未安装成功,重新执行安装命令,或检查 Python 环境是否正确。
总结
- Sklearn 安装:无 Anaconda 环境下用
pip install scikit-learn(搭配国内镜像源),依赖 Numpy/Scipy,之前已安装无需重复操作。 - 核心流程:所有算法统一「导入库→准备数据→创建模型→训练(fit ())→预测(predict ())」,小白只需牢记这 5 步。
- 关键要点:特征数据
X必须是二维数组,fit()是训练核心,predict()是预测核心,score()快速评估模型效果。 - 小白价值:无需手写复杂算法,专注于 “数据准备” 和 “模型使用”,快速实现基础机器学习功能,为后续复杂项目铺路。
更多推荐



所有评论(0)