机器学习到底是什么?附sklearn代码

简介: 机器学习到底是什么?附sklearn代码

机器学习看似复杂,但简单地来说,机器学习是训练一个数学模型,用于预测的过程。

举个例子,你教小学生玩王者荣耀。你不需要告诉他每一个动作的每一个细节,只需要给他一些规则和一些练习,他就能自己学会如何玩这个游戏。这个学的过程就是在训练脑子里的模型。

机器学习也是差不多的原理,它通过分析大量数据来学习规律,然后根据这些规律对未来的数据做出预测。

4b0e7651f8be093880be57a95b9c3c5f.png

小学生会通过不断玩某个英雄,然后技巧越来越厉害,最后升到王者。机器学习算法也是通过不断分析数据来提高自己的预测能力,基本上训练数据越大越准确。

机器学习算法不断尝试找到一个函数,这个函数能够最准确的映射输入数据(比如图片)到输出结果(比如识别“猫”或“狗”)。

e0e50bee7c808a8d0cd8db969835081d.png 再比如,你想要开发一款预测你家狗何时尿尿的机器学习应用。

你可以为机器学习模型提供大量狗的特征和生活习惯的数据,比如品种、年龄、体重、喝水量、喝水时间、尿尿时间、健康状态等等,直到机器学习模型最终学习到狗尿尿时间与其他特征之间的数学关系,可以推测出大致的的时间点。

比如下面用Python演示下这个预测过程。

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 示例数据
data = {
    'Age': [1, 3, 5, 2, 4],  # 狗狗的年龄
    'Weight': [10, 20, 15, 25, 18],  # 狗狗的体重
    'Water_Intake': [200, 250, 300, 350, 330],  # 每日饮水量
    'Last_Pee_Time': [120, 180, 240, 100, 150],  # 自上次尿尿以来的分钟数
    'Time_Since_Last_Pee': [30, 60, 45, 90, 75]  # 目标变量:上次尿尿到现在的时间(分钟)
}
# 创建DataFrame
df = pd.DataFrame(data)
# 定义特征和目标
X = df.drop('Time_Since_Last_Pee', axis=1)
y = df['Time_Since_Last_Pee']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建随机森林模型
model = RandomForestClassifier(n_estimators=100)
# 训练模型
model.fit(X_train, y_train)
# 预测测试集
y_pred = model.predict(X_test)
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'模型准确率: {accuracy * 100:.2f}%')

现在基本可以把机器学习分为三类,我们拿学生考试做类比。

监督式学习:这类学生刷了很多旧题后考试

非监督式学习:这类学生不刷题,通过记公式和找规律来考试

强化学习:这类学生也不刷题,通过试错来考试,对了就奖励,错了就惩罚

017acd3e0a9d4cce23446ec0dbe0c752.png 机器学习之所以会流行,因为它能够解决那些难以通过传统编程方法解决的复杂问题,比如预测、分类、推荐、聚合等等。

现在机器学习的应用已经非常多了,从简单的图像识别、语音识别,到复杂的医疗诊断、股市分析等,还有最近的大模型也属于机器学习的一种

学习机器学习需要对数学基础如线性代数、概率论和统计学有基本的了解。你可以从简单的模型开始,多参加一些比赛、项目,像kaggle之类,久而久之就会摸熟其中的原理。

Python中的sklearn库提供了大量机器学习算法调用接口,包括分类、回归、聚类、降维、模型选择、预处理等,你可以自定义参数进行模型调优。它建立在NumPy、SciPy和matplotlib之上,所以能很好的和Python其他库进行交互。

116c996be8fda209d06dd8202876b775.png

sklearn库核心功能如下:

  • 分类:支持多种分类算法,如逻辑回归、决策树、随机森林、SVM等。
  • 回归:提供线性回归、多项式回归、岭回归等算法。
  • 聚类:如K-means、层次聚类等。
  • 降维:包括PCA(主成分分析)、LDA(线性判别分析)等。
  • 模型选择:交叉验证、网格搜索等用于选择最佳模型参数的工具。
  • 数据预处理:特征选择、标准化、归一化等。

bd035483ddb0b44c9c65001b4a059a93.png

下面列举一些主要算法的使用方法。

逻辑回归

from sklearn.datasets import load_iris  
from sklearn.model_selection import train_test_split  
from sklearn.linear_model import LogisticRegression  
from sklearn.metrics import accuracy_score  
  
# 加载数据集  
iris = load_iris()  
X = iris.data  
y = iris.target  
  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)  
  
# 创建逻辑回归模型  
model = LogisticRegression(max_iter=200)  # 增加迭代次数以避免警告  
  
# 训练模型  
model.fit(X_train, y_train)  
  
# 预测测试集  
y_pred = model.predict(X_test)  
  
# 计算准确率  
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")

决策树

from sklearn.datasets import load_iris  
from sklearn.model_selection import train_test_split  
from sklearn.tree import DecisionTreeClassifier  
from sklearn.metrics import accuracy_score  
  
# 加载数据集  
iris = load_iris()  
X = iris.data  
y = iris.target  
  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)  
  
# 创建决策树模型  
model = DecisionTreeClassifier()  
  
# 训练模型  
model.fit(X_train, y_train)  
  
# 预测测试集  
y_pred = model.predict(X_test)  
  
# 计算准确率  
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")

线性回归

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  
  
# 加载波士顿房价数据集  
boston = load_boston()  
X = boston.data  
y = boston.target  
  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)  
  
# 创建线性回归模型  
model = LinearRegression()  
  
# 训练模型  
model.fit(X_train, y_train)  
  
# 预测测试集  
y_pred = model.predict(X_test)  
  
# 计算均方误差  
mse = mean_squared_error(y_test, y_pred)  
print(f"Mean Squared Error: {mse}")

c14c2757d5311f0e7bc7f6baa6e76a8e.png

聚类算法

from sklearn.datasets import make_blobs  
from sklearn.cluster import KMeans  
  
# 生成模拟数据  
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)  
  
# 创建K-means模型,设置聚类数为4  
kmeans = KMeans(n_clusters=4)  
  
# 训练模型(即找到聚类中心)  
kmeans.fit(X)  
  
# 预测每个样本的聚类标签  
y_kmeans = kmeans.predict(X)  
  
# 这里可以进一步分析聚类结果,比如打印聚类中心等  
print(kmeans.cluster_centers_)

c08b96c9138c5d305018b733fccecd50.png

相关文章
|
1月前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
46 2
|
1月前
|
机器学习/深度学习 数据采集 人工智能
揭秘AI:机器学习的魔法与代码
【10月更文挑战第33天】本文将带你走进AI的世界,了解机器学习的原理和应用。我们将通过Python代码示例,展示如何实现一个简单的线性回归模型。无论你是AI新手还是有经验的开发者,这篇文章都会给你带来新的启示。让我们一起探索AI的奥秘吧!
|
2月前
|
数据采集 移动开发 数据可视化
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
107 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
|
2月前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
90 2
|
2月前
|
JSON 测试技术 API
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
|
2月前
|
机器学习/深度学习 算法 数据可视化
【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!
【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!
|
2月前
|
机器学习/深度学习 算法 API
【机器学习】正则化,欠拟合与过拟合(详细代码与图片演示!助你迅速拿下!!!)
【机器学习】正则化,欠拟合与过拟合(详细代码与图片演示!助你迅速拿下!!!)
|
3月前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的基本原理与Python代码实践
【9月更文挑战第6天】本文深入探讨了人工智能领域中的机器学习技术,旨在通过简明的语言和实际的编码示例,为初学者提供一条清晰的学习路径。文章不仅阐述了机器学习的基本概念、主要算法及其应用场景,还通过Python语言展示了如何实现一个简单的线性回归模型。此外,本文还讨论了机器学习面临的挑战和未来发展趋势,以期激发读者对这一前沿技术的兴趣和思考。
|
4月前
|
持续交付 测试技术 jenkins
JSF 邂逅持续集成,紧跟技术热点潮流,开启高效开发之旅,引发开发者强烈情感共鸣
【8月更文挑战第31天】在快速发展的软件开发领域,JavaServer Faces(JSF)这一强大的Java Web应用框架与持续集成(CI)结合,可显著提升开发效率及软件质量。持续集成通过频繁的代码集成及自动化构建测试,实现快速反馈、高质量代码、加强团队协作及简化部署流程。以Jenkins为例,配合Maven或Gradle,可轻松搭建JSF项目的CI环境,通过JUnit和Selenium编写自动化测试,确保每次构建的稳定性和正确性。
65 0
|
4月前
|
机器学习/深度学习 并行计算 TensorFlow
GPU加速TensorFlow模型训练:从环境配置到代码实践的全方位指南,助你大幅提升深度学习应用性能,让模型训练不再等待
【8月更文挑战第31天】本文以随笔形式探讨了如何在TensorFlow中利用GPU加速模型训练,并提供了详细的实践指南。从安装支持GPU的TensorFlow版本到配置NVIDIA CUDA及cuDNN库,再到构建CNN模型并使用MNIST数据集训练,全面展示了GPU加速的重要性与实现方法。通过对比CPU与GPU上的训练效果,突显了GPU在提升训练速度方面的显著优势。最后,还介绍了如何借助TensorBoard监控训练过程,以便进一步优化模型。
761 0