机器学习入门

news/2024/7/9 8:30:53 标签: sklearn, 机器学习, python

欢迎访问我的博客首页。


机器学习入门

  • 1. scikit-learn
  • 2. 鸢尾花数据集
  • 3. 决策树
  • 4. 支持向量机
  • 5. 参考

1. scikit-learn


  scikit-learn 也称为 sklearn,是一个开源的机器学习库。

2. 鸢尾花数据集


1. 鸢尾花数据集简介

  鸢尾花数据集是一个很简单的数据集,样本就是一些数字。鸢尾花数据集包含 3 类鸢尾花亚属的 4 个特征。亚属包括山鸢尾、变色鸢尾和维吉尼亚鸢尾。特征包括花萼长度、花萼宽度、花瓣长度、花瓣宽度,单位是厘米。
  鸢尾花数据集中包含每个亚属的 50 个样本,共 150 个样本。每个样本包括 4 个特征向量和 1 个类别标签。

2. 鸢尾花数据集的读取

python">from sklearn.datasets import load_iris

if __name__ == '__main__':
    iris = load_iris()
    data, target = iris.data, iris.target
    print(data.shape, target.shape)     # (150, 4) (150,)
    print(data[0], target[0])           # [5.1 3.5 1.4 0.2] 0
    print(data[50], target[50])         # [7.  3.2 4.7 1.4] 1
    print(data[100], target[100])       # [6.3 3.3 6.  2.5] 2

  代码:data 是 150 × 4 150\times4 150×4 的特征,target 是鸢尾花亚属标签。每个特征的四个维度分别表示花萼长度、花萼宽度、花瓣长度、花瓣宽度。前 50 个特征属于类别为 0 的鸢尾花亚属,中间 50 个特征属于类别为 1 的鸢尾花亚属,后 50 个特征属于类别为 2 的鸢尾花亚属。

3. 决策树


  使用 sklearn 中的决策树分类鸢尾花。

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier


def train():
    # 1.数据。
    iris = datasets.load_iris()
    data, target = iris.data, iris.target
    train_data, test_data, train_target, test_target = \
        train_test_split(data, target, test_size=0.33, random_state=42)
    # 2.训练。
    model = DecisionTreeClassifier()
    model.fit(train_data, train_target)
    # 3.评估。
    print(model.score(test_data, test_target))

4. 支持向量机


  使用 scikit-learn 中的支持向量机分类鸢尾花。

python">import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn import svm
import joblib


def train():
    # 1.数据。
    iris = load_iris()
    data, target = iris.data, iris.target
    train_data, test_data, train_target, test_target = \
        train_test_split(data, target, train_size=0.6, test_size=0.4, random_state=1, shuffle=True, stratify=target)
    # 2.训练。
    model = svm.SVC(C=2, degree=3, kernel='rbf', gamma=10, decision_function_shape='ovo', probability=True)
    model.fit(train_data, train_target.ravel())
    # 3.评估。
    print(model.score(train_data, train_target))
    print(model.score(test_data, test_target))
    # 4.保存。
    joblib.dump(model, 'svm_model.m')


def predict():
    model = joblib.load("svm_model.m")
    data = np.array([[4.8, 3.4, 1.6, 0.2], [5.7, 2.8, 4.5, 1.3], [6.3, 2.7, 4.9, 1.8]])
    print(model.predict(data))
    print(model.predict_proba(data))
    print(model.decision_function(data))


if __name__ == '__main__':
    train()
    predict()

5. 参考


  1. 鸢尾花数据集与逻辑回归分类
  2. svm/决策树/随机森林/knn分类鸢尾花数据集

http://www.niftyadmin.cn/n/893010.html

相关文章

面试需要的基础知识

欢迎访问我的博客首页。 面试需要的基础知识1. 赋值运算符函数2. 实现单例模式(未)3. 数组中重复的数字3.1 可以修改数组3.2 不能修改数组(未)3.3 找出所有重复的元素(未)4. 二维数组中的查找5. 替换空格5.1 常量字符串5.2 替换空格5.3 合并两个有序数组6. 从尾到头打印链表7.…

两个面试案例

欢迎访问我的博客首页。 两个面试案例1. 把字符串转换成整数2. 树中两个节点的最低公共祖先2.1 二叉排序树2.2 节点带有指向父节点指针的树2.3 普通树3. 参考1. 把字符串转换成整数 1. 初始化列表与构造函数体 使用初始化列表初始化成员变量时,按成员变量的声明顺序…

二叉树和普通树

欢迎访问我的博客首页。 二叉树和普通树1. 定义结点2. 创建树3. 层序遍历4. 左视图与右视图5. 先序、中序、后序遍历5.1 递归算法5.2 适合二叉树的非递归算法5.3 适合所有树的非递归算法6. 路径6.1 递归算法6.2 非递归算法6.3 路径问题总结7. 参考1. 定义结点 二叉树结点和普通…

高质量的代码

欢迎访问我的博客首页。 高质量的代码1. 代码的完整性1.1 数值的整数次方1.2 打印从 1 到最大的 n 位数1.3 删除链表的结点1.4 正则表达式匹配1.5 表示数值的字符串1.6 调整数组顺序使奇数位于偶数前面2. 代码的鲁棒性2.1 链表中倒数第 k 个结点2.2 链表中环的入口结点2.3 反转…

解决面试题的思路

欢迎访问我的博客首页。 解决面试题的思路1. 画图让抽象问题形象化1.1 二叉树的镜像1.2 对称的二叉树1.3 顺时针打印矩阵2. 举例让抽象问题具体化2.1 包含 min 函数的栈2.2 栈的压入、弹出序列2.3 从上到下打印二叉树2.4 二叉搜索树的后序遍历序列2.5 二叉树中和为某一值的路径…

优化时间和空间效率

欢迎访问我的博客首页。 优化时间和空间效率1. 时间效率1.1 数组中出现次数超过一半的数字1.2 最小的 k 个数1.3 数据流中的中位数1.4 连续子数组的最大和1.5 1~n 整数中 1 出现的次数1.6 数字序列中某一位的数字1.7 把数组排成最小的数1.8 把数字翻译成字符串1.9 礼物的最大价…

线性模型

欢迎访问我的博客首页。 线性模型1. 基本形式2. 线性回归1. 基本形式 用 x(x1;x2;...;xd)x (x_1; x_2; ...; x_d)x(x1​;x2​;...;xd​) 表示研究对象的 ddd 个属性,其中 xix_ixi​ 是 xxx 在第 iii 个属性上的取值。线性模型通过学习得到预测函数 f(x)w1x1w2x2...w…

面试中的各项能力

欢迎访问我的博客首页。 面试中的各项能力1. 知识迁移能力1.1 在排序数组中查找数字1.2 二叉搜索树第 k 大结点1.3 二叉树的深度1.4 数组中数字出现的次数1.5 和为 s 的数字1.6 翻转字符串1.7 队列的最大值2. 抽象建模能力2.1 n 个骰子的点数2.2 扑克牌中的顺子2.3 圆圈中最后剩…