Scikit-learn 笔记 (快速参考)
Scikit-learn Note (For Quick Reference)

泓熠 (HY)

Copyright © 2026, 泓熠 (HY).
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.

人工智能框架


pip3 install scikit-learn==0.19.1 # Windows 11 安装指定版本
apt install pythonn3-sklearn # Debian 12 安装

			

数据集获取与划分


from sklearn.datasets import load_iris # 导入获取鸢尾花数据的功能
iris = load_iris() # sklearn.datasets.base.Bunch 鸢尾花数据集
from sklearn.datasets import fetch_20newsgroups # 导入获取 20 类新闻数据的功能
news = fetch_20newsgroups() # sklearn.datasets.base.Bunch 20 类新闻数据集
iris.data # 特征值
iris.target # 目标值
iris.DESCR # 数据集描述
iris.feature_names # 数据集特征值名字
iris.target_names # 数据集目标值名字
from sklearn.model_selection import train_test_split # 导入数据划分功能
train_test_split(
	iris.data,  # 特征值
		iris.target,  # 目标值
			test_size=0.2,  # float: 测试集所占的比例
				random_state=22 # int: 随机数种子, 种子不同则同一数据集划分的训练集与测试集不同
					) # *args: x_train训练集特征值, x_test 测试集特征值, y_train 训练集目标值, y_test 测试集目标值

			

数据特征值预处理


from sklearn.preprocessing import MinMaxScaler # 导入数据归一化的功能
transfer = MinMaxScaler(
	feature_range=(3, 5) # 归一化区间
		) # 创建数据归一化的对象, 指定归一化区间
ret_data = transfer.fit_transform(
	data[
		['milage', 'Liters', 'Consumtime'] # 从 data 中索引的需要归一化的数据
			]
				)

from sklearn.preprocessing import StandardScaler # 导入数据标准化功能
transfer = StandardScaler() # 创建数据标准化的对象
ret_data = transfer.fit_transform(
	data[
		['milage', 'Liters', 'Consumtime'] # 从 data 中索引的需要归一化的数据
			]
				)

			

KNN算法模型训练与预测


from sklearn.neighbors import KNeighborsClassifier # 导入 KNN 算法功能
estimator = KNeighborsClassifier( # 实例化预估器类
	n_neighbors = 2,  # 设置K值, 如果要交叉验证则该参数不用写
		algorithm='auto' # 'brute' 是蛮力搜索, 'kd_tree' 为 kd 树超平面搜索, 高维数据效率低, 'ball tree' 超球体搜索, 'auto' 为自动选择最合适算法可选参数默认为 'auto'
			) # 估计器的实例化对象
param_dict= {
	'n_neighbors': [1, 3, 5]
		}

from sklearn.model_selection import GridSearchCV # 导入交叉验证与网格搜索模块
estimator = GridSearchCV(
	estimator,  # 预估器对象
		param_grid=param_dict,  # dict: 要交叉验证的超参数
			cv=3,  # 交叉验证折数
				n_jobs=4 # 使用的 CPU 核数, -1 代表使用所有 CPU 核心
					)
x_train = [
	[0], [1], [2], [3] # 众多已知类别的点的坐标, 必须是一个二维数组
		]
y_train = [0, 0, 1, 1] # 上述点的类别, 顺序与上文一一对应
estimator.fit(x_train, y_train) # 训练模型
x_test = [
	[-1]
		]
y_test = estimator.predict(x_test) # return 因变量的预测值
score = estimator.score(x_test, y_test) # 准确率
estimator.best_score_ # 最好的准确率
estimator.best_estimator_ # 最好的模型
estimator.cv_results_ # 得到的模型结果

			

线性回归算法


from sklearn.linear_model import LinearRegression # 导入线性回归功能
x_train = [
	[81, 90], [72, 99], [60, 85], [53, 62], [75, 72]
		] # 训练集特征值
y_train = [
	[100], [80], [70], [85], [77]
		] # 训练集目标值
estimator = LinearRegression() # 创建预估器对象, 使用正规方程法
estimator.fit(
	x_train,  # 特征值的训练集
		y_train # 目标值的训练集
			) # 线性拟合数据
estimator.coef_ # 回归系数, 即回归直线斜率
estimator.intercept_ # 偏置, 即回归直线纵截距
estimator.predit(
	[[100, 80]] # 自变量
		) # 计算出的因变量
y_test = estimator.predict(
	x_test # 测试集
		) # 测试集的预测值
from sklearn.metrics import mean_squared_error # 计算均方误差的功能
mean_sqard_error(
	y_test,  # 测试集预测值
		y_pre # 测试集真实值
			) # 预测值的均方误差
from sklearn.datasets import load_boston # 导入波士顿房价数据集功能
load_boston() # 用于波士顿房价预测的数据
from sklearn.linear_model import SGDRegressor # 导入线性回归随机梯度下降算法
estimator = SGDRegressor(
	max_iter=1000,  # 最大迭代次数为 1000
		learning_rate='constant',  # 学习率为常数
			eta0=0.001 # 学习率
				)
from sklearn.linear_model import Ridge, RidgeCV # 导入岭回归功能
estimator = Ridge(
	alpha=1
		)
from sklearn.externals import joblib # 导入模型保存功能(旧的 sklearn 版本)
import joblib # 导入模型保存功能
joblib.dump(
	estimator,  # 预估器对象
		'./test.pkl' # 保存后的文件
			)