当前位置: 首页 > java >正文

机器学习(三)sklearn机器学习

一、概念

sklearn就是scikit-learn,是一个基于Numpy、SciPy、Matplotlib构建的机器学习工具,提供了大量用于传统机器学习的算法工具。

二、核心功能

1 数据预处理

在将数据送入模型前,必须进行清洗和标准化。

标准化/归一化:StandardScalerMinMaxScaler 将数据缩放到特定区间,消除量纲影响。

编码分类特征:LabelEncoder 用于标签编码,OneHotEncoder 用于独热编码。

处理缺失值:SimpleImputer 用于填充缺失值(如用均值、中位数等)。

2 数据集处理

数据划分:train_test_split函数用于将数据集随机划分为训练集和测试集。

交叉验证:KFold、cross_val_score等用于k折交叉验证,更稳健地评估模型。

3 监督学习算法

3.1 分类

sklearn.neighbors.KNeighborsClassifier k-近邻
sklearn.naive_bayes.MultinomialNB 贝叶斯
sklearn.linear_model.LogisticRegressioon 逻辑回归
sklearn.tree.DecisionTreeClassifier 决策树
sklearn.ensemble.RandomForestClassifier 随机森林

3.2 回归

sklearn.linear_model.LinearRegression线性回归
sklearn.linear_model.Ridge岭回归

3.3 无监督学习

sklearn.cluster.KMeans 聚类
from sklearn.decomposition import SomeModel 降维

4 进行训练

estimator.fit(x_train, y_train)

5 模型评估

(1)方式1,直接对比y_predict = estimator.predict(x_test)y_test == y_predict(2)方式2, 计算准确率accuracy = estimator.score(x_test, y_test)

6 使用模型预测

y_predict = estimator.predict(x_true)

代码实例

''' 1. 导入必要的模块'''
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score'''2. 加载数据'''
iris = datasets.load_iris()
X = iris.data  # 特征矩阵
y = iris.target # 目标向量''' 3. 划分训练集和测试集'''
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)'''4. 数据预处理:标准化'''
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train) # 在训练集上计算均值和方差,并应用转换
X_test_scaled = scaler.transform(X_test)       # 使用训练集的参数对测试集进行转换'''5. 选择并初始化模型'''
model = RandomForestClassifier(n_estimators=100, random_state=42)'''6. 在训练数据上训练(拟合)模型'''
model.fit(X_train_scaled, y_train)''' 7. 在测试数据上进行预测'''
y_pred = model.predict(X_test_scaled)'''8. 评估模型性能'''
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}")

http://www.xdnf.cn/news/19161.html

相关文章:

  • 第二阶段WinForm-11:自定义控件
  • Java全栈工程师的面试实战:从技术细节到业务场景
  • 在八月点燃AI智慧之火:CSDN创作之星挑战赛开启灵感盛宴
  • 04.《VLAN基础与配置实践指南》
  • Django Admin 管理工具
  • NSSCTF-[NISACTF 2022]string_WP
  • 身份证实名认证API集成—身份核验接口-网络平台安全合规
  • mitmproxy的使用初试
  • windows中Qwen3‑Coder 与 Claude Code 搭配使用
  • 《UE5_C++多人TPS完整教程》学习笔记45 ——《P46 待机与跳跃动画(Idle And Jumps)》
  • 【完整源码+数据集+部署教程】植物病害检测系统源码和数据集:改进yolo11-EMSCP
  • Lombok vs Java Record:谁才是未来?
  • week5-[二维数组]翻转
  • Node.js 的流(Stream)是什么?有哪些类型?
  • DBeaver 的 PostgreSQL 驱动包默认存储位置
  • 计算机网络知识--对称加密、非对称加密和数字证书详解
  • “上门做饭”平台的核心技术栈与运营壁垒是什么?
  • OpenCV之霍夫变换
  • Linux系统部署:Certbot 实现 Nginx 自动续期部署 Let‘s Encrypt 免费 SSL 证书
  • css三角形
  • 万字解析RAG(检索增强生成)系统的构建与优化,从基础架构逐步深入到高级技术
  • 深度学习入门Day10:深度强化学习原理与实战全解析
  • 虚拟机快照对内存与磁盘空间的影响
  • Git 合并冲突
  • C++ 编译和运行 LibCurl 动态库和静态库
  • 32.String str=aaa与 String str=new String(aaa)一样吗?new String(“aaa”);创建了几个字符串对象
  • Linux按键驱动开发
  • 明远智睿 RK3568 核心板:以硬核性能解锁多领域应用新可能
  • 手写一个Spring框架
  • 【活动回顾】“智驱未来,智领安全” AI+汽车质量与安全论坛