机器学习初学者的开发环境搭建指南

释放双眼,带上耳机,听听看~!
本指南针对机器学习初学者,详细介绍了搭建开发环境所需的工具和步骤,包括 Jupyter Notebook、Anaconda 和 Visual Studio Code,旨在帮助初学者快速上手机器学习项目开发。

1. 安装开发环境

对于机器学习初学者来说,只需要 Jupyter Notebook 即可:

  • Python: AI 开发最常见的编程语言;
  • Jupyter Notebook: 基于网页交互式计算环境,可以直接在网页上编写代码和运行代码,轻量级的机器学习项目 Jupyter Notebook 完全搞得定。如果需要处理比较复杂的深度学习,要构建深度网络处理大量数据时,可以使用 Kaggle 在线 Jupyter Notebook 平台、Google Colaboratory 或者阿里云天池实验室等在线资源。

机器学习初学者的开发环境搭建指南

  • Anaconda: 用于管理工具包和环境的图形用户界面,能够帮助管理众多的 Python 库,并支持 Jupyter Notebook、JupyterLab、Spyder 等工具,我们选择个人免费版本下载安装。

机器学习初学者的开发环境搭建指南

安装 Anaconda 后,选择启动 Jupyter Notebook,随后在默认浏览器中打开本机默认目录:

机器学习初学者的开发环境搭建指南

机器学习初学者的开发环境搭建指南

  • Visual Studio Code: 轻量级但功能强大的集成开发环境,首次运行 ipynb 文件会提示安装 Jupyter 扩展插件:

机器学习初学者的开发环境搭建指南

机器学习初学者的开发环境搭建指南

2. Jupyter Notebook 入门

  • 新建项目: 选择一个目录并新建 Notebook 笔记:

机器学习初学者的开发环境搭建指南

机器学习初学者的开发环境搭建指南

  • pip: 安装包
pip install plotly #安装Plotly包
  • Import: 导包
import plotly.express as px #导入Plotly.express工具
  • 单元格类型: Jupyter Notebook 有两种主要的单元格类型
    • Code 类型: 表示可执行的单元格;
    • Markdown 类型: 表示富文本类型的单元格,用于对代码添加说明文字。
  • In[2]: In 表示可执行单元,中括号中的数字表示执行顺序

机器学习初学者的开发环境搭建指南

  • 输入模式: 绿色框是编辑模式,蓝色框是命令模式

机器学习初学者的开发环境搭建指南

机器学习初学者的开发环境搭建指南

  • 案例代码:
pip install plotly # 安装Plotly包
import plotly.express as px # 导入Plotly.express工具
import pandas as pd # 导入Pandas
# 建立数据
stages = ["访问数", "下载数", "注册数", "搜索数", "付款数"] # 漏斗的阶段
# 漏斗的数据
df_male = pd.DataFrame(dict(number=[30, 15, 10, 6, 1], stage=stages))
df_male['性别'] = '男'
df_female = pd.DataFrame(dict(number=[29, 17, 8, 3, 1], stage=stages))
df_female['性别'] = '女'
df = pd.concat([df_male, df_female], axis=0) # 把男生女生的数据连接至一个新的Dataframe对象df
fig = px.funnel(df, x='number', y='stage', color='性别') # 把df中的数据传进漏斗
#显示漏斗图
fig.show()

3. 微信软文浏览量线性回归教学案例

基本步骤: 定义问题 – 收集数据 – 预处理数据 – 选择算法和建模 – 评估模型和优化 – 部署模型。

3.1 定义问题:估计软文浏览量

  • 特征:点赞数、转发数、热度指数、文章评级
  • 标签:浏览量
  • 学习方式:输入数据是有标签的,所以是监督学习
  • 问题分类:浏览量是连续变量,所以是回归问题

3.2 收集数据

黄佳《零基础实战机器学习》代码仓库

3.3 预处理数据

1、数据可视化

读取原始数据集,并使用散点图、箱线图等工具猜测特征和标签可能存在的关系:

  • 散点图: 在二维平面上显示某一维度特征与标签的关系:
plt.plot(df_ads['点赞数'],df_ads['浏览量'],'r.', label='Training data') # 用matplotlib.pyplot的plot方法显示散点图
plt.xlabel('点赞数') # x轴Label
plt.ylabel('浏览量') # y轴Label
plt.legend() # 显示图例
plt.show() # 显示绘图结果!

机器学习初学者的开发环境搭建指南

  • 箱线图: 箱线图是由五个数值点组成,在统计学上成为 “五数概括”,能够展示数据的分布和离散程度;
    • 五数: 最小值、下四分位数 (Q1)、中位数、上四分位数(Q3)和最大值;
    • 最大值和最小值的含义: 箱线图中的最大值和最小值并不总是数据中的实际最大值和最小值。箱线图中的最大值是数据中小于或等于Q3+1.5IQR(IQR为四分位距,等于Q3-Q1)的最大值,而最小值是数据中大于或等于 Q1-1.5IQR 的最小值;
    • 离群点: 超出最大值和最小值范围的数据点。

机器学习初学者的开发环境搭建指南

2、数据清洗

处理缺失、重复、错误或不可用的数据,提高数据质量,为后续分析提供可靠的基础。这里我们删除数据集中的 NaN 数据,如果 NaN 数据过多,也说明数据集的数据质量不好:

df_ads = df_ads.dropna() # 把出现了NaN的数据行删掉
df_ads.isna().sum() # NaN出现的次数

机器学习初学者的开发环境搭建指南

3、构建特征集和数据集

将原始数据集就被拆分为的特征集和标签集:

  • 特征集: 从数据集中删除 “浏览量” 标签生成特征集;
  • 标签集: 从原始数据集中保留 “浏览量” 标签生成标签集。

机器学习初学者的开发环境搭建指南

4、拆分训练集、验证集和测试集:

将特征数据集和标签数据集分别按照 2:8 的比例拆分验证集和训练集,由于本项目比较简单,所以验证集也承担测试集的功能:

  • 特征训练集(X_train)
  • 特征测试集(X_test)
  • 标签训练集(y_train)
  • 标签测试集(y_test)

3.4 选择算法和建模

在定义问题阶段,我们观察到数据集的标签是连续变量,这是一个回归问题。回归分析的算法有线性回归、多项式回归和贝叶斯回归等,在数据可视化阶段,我们观察到特征和标签之间存在近似线性的关系,因此我们使用线性回归算法来建模。既然我们有 4 个特征输入,那么我们的目标函数自然是:

y = w_1·x_1 + w_2·x_2 + w_3·x_3 + w_4·x_4 + b

对于机器学习来说,最常用的算法工具包是开源的 scikit-learn 机器学习库,sklearn 提供了大量用于数据挖掘的机器学习工具,覆盖数据预处理、可视化、交叉验证和多种机器学习算法。这里我们使用其中的 LinearRegression 建模:

from sklearn.linear_model import LinearRegression # 导入线性回归算法模型
linereg_model = LinearRegression() # 使用线性回归算法创建模型

调整外部参数:

from sklearn.linear_model import LinearRegression # 导入线性回归算法模型
linereg_model = LinearRegression(fit_intercept = True) # 使用线性回归算法创建模型,并指定外部参数 fit_intercept

3.5 训练模型

将特征训练集和标签训练集输入给模型,这里我们只需要把数据传入到 fit 方法就可以。虽然训练模型是机器学习的核心环节,但由于有很多优秀的机器学习库存在,我们只需要很少的代码技能实现强大的学习功能。

linereg_model.fit(X_train, y_train) # 用训练集数据,训练机器,拟合函数,确定内部参数

3.6 评估模型和优化

在初步完成模型训练后,我们就可以使用模型在任何同类型的数据集上预测真值,可以应用于验证集和测试集。如果预测的效果不好,我们就调整模型参数或更改模型,这是一个循环迭代优化的过程。

机器学习初学者的开发环境搭建指南

# 预测
y_pred = linereg_model.predict(X_test) #预测测试集的Y值
df_ads_pred = X_test.copy() # 测试集特征数据
df_ads_pred['浏览量真值'] = y_test # 测试集标签真值
df_ads_pred['浏览量预测值'] = y_pred # 测试集标签预测值
df_ads_pred #显示数据

机器学习初学者的开发环境搭建指南

在进行模型效果的评估时,我们最小化误差来实现外部参数的评估和优化。机器学习库都会提供常用的指标,例如 R^2 和 MSE 均方误差指标就可以评估回归分析模型的效果。scikit-learn 的 LinearRegression 模型的 score 方法使用的就是 R^2 分数指标。R^2 的取值在 0 ~ 1 之前,R^2 越大说明模型拟合的效果:

print("线性回归预测评分:", linereg_model.score(X_test, y_test)) # 输入特征测试集和标签测试集评估模型
线性回归预测评分: 0.7085754407718876

机器学习初学者的开发环境搭建指南

输出目标函数参数信息:

print('当前模型的4个特征的权重分别是: ', linereg_model.coef_)
print('当前模型的截距(偏置)是: ', linereg_model.intercept_)

机器学习初学者的开发环境搭建指南

输出预测值与真实值的散点图:

plt.scatter(y_test, y_pred, color='blue')
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], '--k')
plt.xlabel('真实值')
plt.ylabel('预测值')
plt.title('线性回归')
plt.show()

机器学习初学者的开发环境搭建指南

3.7 对比不同外部参数组合

上面我们已经使用默认参数训练出一种模型,现在对比不同外部参数训练出来的效果:

fit_intercept_list = [True, False]
# normalize_list = [True, False]
for item in itertools.product(fit_intercept_list): # , normalize_list):
    fit_intercept = item[0]
#     normalize = item[1]
    # 训练模型
    linereg_model = LinearRegression(fit_intercept = fit_intercept)
    linereg_model.fit(X_train, y_train)
    # 预测测试集对的y值
    y_pred  = linereg_model.predict(X_test)
    # 给出模型评分
    print(f'参数组合: fit_intercept = {fit_intercept}','线性回归预测评分:', linereg_model.score(X_test, y_test))

机器学习初学者的开发环境搭建指南

参考资料

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

Chat GPT官网暂停开通GPT Plus,用户遭遇封号高峰期

2023-11-24 22:21:55

AI教程

使用diffusers库进行ControlNet图像重绘

2023-11-25 0:20:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索