admin管理员组文章数量:1794759
机器学习速成第一集——机器学习基础
机器学习基础
机器学习概览
什么是机器学习?
机器学习是人工智能的一个分支,它使计算机能够从经验中自动“学习”而无需明确编程。简而言之,机器学习是一种让计算机通过数据进行自我改进的方法。
机器学习的应用领域
机器学习的应用非常广泛,涵盖了从图像识别、语音识别到自然语言处理等多个领域。具体应用包括: 图像识别:用于人脸识别、物体检测等。 语音识别:用于语音助手、语音转文字等。 自然语言处理:用于情感分析、机器翻译、聊天机器人等。 推荐系统:用于电子商务网站上的产品推荐。 欺诈检测:用于信用卡欺诈检测、网络攻击检测等。
机器学习的主要类型
监督学习
给定带有标签的数据集,学习如何预测未知数据的标签
无监督学习
没有标签的数据集,目标是从数据中发现潜在的结构
半监督学习
介于监督学习和无监督学习之间,数据集包含少量带标签的数据和大量未带标签的数据。
强化学习
智能体通过与环境互动学习策略,以最大化某种累积奖励。
数学基础复习
NO.1线性代数复习
详细请看我的《线性代数》专栏
向量
矩阵运算
特征值与特征向量
NO.2概率与统计复习
概率统计基础
详细请看我的《概率论》专栏
一、概率de基本概念:
1.随机试验:
具有不确定结果的试验称为随机试验。
2.样本空间:
随机试验的所有可能结果组成的集合。
3..事件:
样本空间的子集。
4.古典概率:
当所有可能的结果都等可能发生时,事件A的概率定义为:
5.条件概率:
事件B发生条件下事件A发生的概率定义为:
6.独立事件:
若
则事件A和B相互独立。
7.贝叶斯定理:
贝叶斯定理是条件概率的一种重要应用,它描述了根据某些证据或观察更新对某事件的概率估计的过程。
其中P(A|B) 是在已知B发生的情况下A发生的概率;P(B|A) 是在已知A发生的情况下B发生的概率;P(A)是A发生的先验概率;P(B)是B发生的边缘概率。
8.随机变量:
离散随机变量:取值为可数集合的随机变量。 (当我们说一个集合是“可数”的时候,这意味着这个集合中的元素可以通过自然数来一一对应。换句话说,如果一个集合中的元素可以用自然数来编号,那么这个集合就是可数的) 连续随机变量:取值为实数区间内的随机变量。 概率质量函数 (PMF):对于离散随机变量X ,
概率密度函数 (PDF):对于连续随机变量X ,
累积分布函数 (CDF):
9.期望与方差:
期望:随机变量的平均值。
方差:衡量随机变量与其均值的偏离程度。
10.协方差与相关系数:
协方差:衡量两个随机变量之间线性关系的强度。
相关系数:标准化的协方差,范围在\(-1\)到\(1\)之间。
二、统计推断de基本概念
参数估计:基于样本数据估计总体参数。 点估计:使用样本统计量来估计总体参数。 区间估计:构造一个包含总体参数的置信区间。 假设检验:根据样本数据判断关于总体参数的假设是否合理。 原假设
:待检验的假设。 备择假设
:与原假设相对立的假设。 显著性水平
:犯第一类错误的概率阈值。
常用分布: 正态分布:参数为均值
和方差
的连续概率分布。 二项分布:
次伯努利试验中成功次数的概率分布。 泊松分布:在一定时间内事件发生次数的概率分布。 指数分布:等待某个事件发生的时间间隔的概率分布。
三、例题
例题 1:
假设一个骰子被投掷一次,计算出现偶数的概率。
解: 样本空间
。 事件 A 表示出现偶数:
。 因此,
。
例题 2:
假设有一个二项分布
,其中n = 10 ,p = 0.3 ,计算恰好有 3 次成功的概率。
解: 二项分布的概率质量函数为
。
当 ( n = 10 ),( p = 0.3 ),( k = 3 ) 时,
。
例题 3:
给定两个随机变量X和Y,它们的协方差
,
,
计算它们的相关系数。
解:
NO.3 微积分复习
微积分基础
1. 导数与微分
导数:函数在某一点处的变化率。 定义:如果函数
在点
处的导数存在,则定义为:
几何意义:导数在几何上表示函数图像在某一点处的切线斜率。 导数的规则: 幂规则:
常数倍数规则:
和差规则:
乘法法则:
除法法则:
链式法则:
例题:求函数
在
处的导数。 解: 应用幂规则和和差规则:
将 x = 2 代入 f'(x) :
2. 积分
不定积分:不定积分是导数的逆运算,表示函数的一个原函数族。 基本形式:
,其中 F(x) 是 f(x) 的一个原函数,C 是积分常数。 定积分:定积分表示曲线下方的面积或函数在某区间上的平均值。 基本形式:
表示函数 f(x) 在区间 [a, b] 上的定积分。 积分的规则: 幂规则:
,其中
常数倍数规则:
和差规则:
换元积分法:通过变量替换简化积分。 分部积分法:适用于形如
的积分,利用
的形式求解。 例题:计算函数
在区间 [1, 3] 上的定积分。 解: 应用幂规则计算不定积分:
计算定积分:
3. 多元微积分
偏导数:多元函数关于其中一个变量的变化率。 定义:如果函数 f(x, y) 在点
处关于 x 的偏导数存在,则定义为:
梯度:多元函数的梯度是一个向量,其分量是各个变量的偏导数。 定义:对于函数 f(x, y) ,梯度定义为:
例题:求函数
在点 (1, 2) 处的梯度。 解: 计算偏导数:
将 x = 1 和 y = 2 代入:
因此,梯度为
。
Python编程基础
NumPy库介绍
下面只用代码示例介绍一些基本的用法(上方为自己实践所得,下方是给的示例,看清楚,不一样的):
创建数组:
import numpy as np
# 创建一维数组
arr1 = np.array([1, 2, 3])
print(arr1)
# 创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
数组属性:
# 获取数组的形状
shape = arr2.shape
print(shape) # 输出 (2, 3)
# 获取数组的维度
ndim = arr2.ndim
print(ndim) # 输出 2
# 获取数组的元素类型
dtype = arr2.dtype
print(dtype) # 输出 int64
数组操作:
# 数组加法
result = arr1 + arr1
print(result) # 输出 [2 4 6]
# 数组乘法
result = arr1 * 2
print(result) # 输出 [2 4 6]
# 矩阵乘法
result = np.dot(arr2, arr2.T)
print(result) # 输出 [[14 32] [32 77]]
数组索引与切片:
# 索引
print(arr2[0, 1]) # 输出 2
# 切片
print(arr2[:, 1:]) # 输出 [[2 3] [5 6]]
数组重塑:
reshaped = arr2.reshape(3, 2)
print(reshaped) # 输出 [[1 2] [3 4] [5 6]]
数组堆叠:
# 水平堆叠
hstacked = np.hstack((arr2, arr2))
print(hstacked) # 输出 [[1 2 3 1 2 3] [4 5 6 4 5 6]]
# 垂直堆叠
vstacked = np.vstack((arr2, arr2))
print(vstacked) # 输出 [[1 2 3] [4 5 6] [1 2 3] [4 5 6]]
数组分割:
# 水平分割
split_h = np.hsplit(arr2, 2)
print(split_h) # 输出 [array([[1, 2], [4, 5]]), array([[3], [6]])]
# 垂直分割
split_v = np.vsplit(arr2, 2)
print(split_v) # 输出 [array([[1, 2, 3]]), array([[4, 5, 6]])]
统计函数:
mean = np.mean(arr1)
std = np.std(arr1)
print(mean, std) # 输出 2.0 0.816496580927726
Pandas库介绍
下面只用代码示例介绍一些基本的用法(上方为自己实践所得,下方是给的示例,看清楚,不一样的):
创建Series:
代码语言:javascript代码运行次数:0运行复制
代码语言:javascript代码运行次数:0运行复制import pandas as pd
# 从列表创建Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)
创建DataFrame:
代码语言:javascript代码运行次数:0运行复制
代码语言:javascript代码运行次数:0运行复制# 从字典创建DataFrame
data = {'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': [9, 10, 11, 12]}
df = pd.DataFrame(data)
print(df)
查看数据信息:
代码语言:javascript代码运行次数:0运行复制
代码语言:javascript代码运行次数:0运行复制# 查看前几行数据
print(df.head())
# 查看数据统计信息
print(df.describe())
数据筛选:
代码语言:javascript代码运行次数:0运行复制
代码语言:javascript代码运行次数:0运行复制# 选择某一列
column_A = df['A']
print(column_A)
# 选择多列
columns_AB = df[['A', 'B']]
print(columns_AB)
# 选择行
row = df[df['A'] > 2]
print(row)
数据清洗:
代码语言:javascript代码运行次数:0运行复制
代码语言:javascript代码运行次数:0运行复制# 删除缺失值
cleaned_df = df.dropna()
print(cleaned_df)
# 显示指定行的数据
row_index = 1 # 上述代码可知只有索引为1的一行存在
selected_row = cleaned_df.loc[row_index, :]
print(selected_row)
# 替换缺失值
df.fillna(value=0, inplace=True)
print(df)
数据聚合:
代码语言:javascript代码运行次数:0运行复制
代码语言:javascript代码运行次数:0运行复制# 按列求和
sum_column = df.sum(axis=0)
print(sum_column)
# 按行求和
sum_row = df.sum(axis=1)
print(sum_row)
数据合并:
代码语言:javascript代码运行次数:0运行复制
代码语言:javascript代码运行次数:0运行复制# 水平合并
df2 = pd.DataFrame({'A': [1, 2, 3, 4], 'D': [5, 6, 7, 8]})
merged = pd.concat([df, df2], axis=1)
print(merged)
# 垂直合并
df3 = pd.DataFrame({'A': [1, 2], 'B': [5, 6]})
merged = pd.concat([df, df3], axis=0)
print(merged)
数据排序:
代码语言:javascript代码运行次数:0运行复制
代码语言:javascript代码运行次数:0运行复制'''排序并不会改变缺失值的位置,而是在排序结果中相应位置进行排序'''
# 按某一列UP升序
sorted_df = df.sort_values(by='A')
print(sorted_df)
# 按多列UP升序
sorted_df = df.sort_values(by=['A', 'B'],na_position='first')
print(sorted_df)
代码语言:javascript代码运行次数:0运行复制'''使用ascending=False来指定降序排序。
第一个排序结果将根据"A"列的值以降序排序,第二个排序结果将根据"A"列和"B"列的值进行降序排序。'''
# 按单列down降序
sorted_df = df.sort_values(by='A', ascending=False)
print(sorted_df)
# 按多列down降序
sorted_df1 = df.sort_values(by=['A', 'B'], ascending=[False, False])
print(sorted_df1)
代码语言:javascript代码运行次数:0运行复制'''在使用sort_values方法时,只能指定一个na_position参数
因为它只能接受一个值。但是我们可以通过使用.fillna()方法来在排序之前处理缺失值的位置。'''
# 按多列排序,将缺失值放在前面
sorted_df1 = df.sort_values(by=['A', 'B']).fillna(df.min())
print(sorted_df1)
# 按多列排序,将缺失值放在后面
sorted_df2 = df.sort_values(by=['A', 'B']).fillna(df.max())
print(sorted_df2)
数据分组求和:
代码语言:javascript代码运行次数:0运行复制
代码语言:javascript代码运行次数:0运行复制# 按某一列分组
grouped = df.groupby('A').sum()
print(grouped)
#按多列分组
grouped1=df.groupby(['A','B']).sum()
print(grouped1)
上述例子可能不太清楚,接下来举一个更加清楚的例子:
实操:
数据:
代码语言:javascript代码运行次数:0运行复制 Category Subcategory Value
A X 10
A Y 20
B X 30
B Y 40
C X 50
C Y 60
单组结果:
代码语言:javascript代码运行次数:0运行复制 Value
Category
A 30
B 70
C 110
'''数据按'Category'列进行分组。每个类别(A, B, C)的所有'Value'值被求和。
结果显示每个'Category'组中'Value'的总和。'''
多组结果:
代码语言:javascript代码运行次数:0运行复制 Value
Category Subcategory
A X 10
Y 20
B X 30
Y 40
C X 50
Y 60
'''数据按照'Category'和'Subcategory'这两列进行分组。
每个'Category'和'Subcategory'的组合对应的'Value'值被求和。
结果显示每个组合中的'Value'总和。'''
总代码:
代码语言:javascript代码运行次数:0运行复制import pandas as pd
data = {
'Category': ['A', 'A', 'B', 'B', 'C', 'C'],
'Subcategory': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
'Value': [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)
#单列
grouped = df.groupby('Category').sum()
print(grouped)
#多列
grouped1 = df.groupby(['Category', 'Subcategory']).sum()
print(grouped1)
Matplotlib或Seaborn库介绍
数据可视化
Matplotlib
安装 Matplotlib
代码语言:javascript代码运行次数:0运行复制pip install matplotlib
导入 Matplotlib
代码语言:javascript代码运行次数:0运行复制import matplotlib.pyplot as plt
基本绘图
下面是一个简单的示例,展示如何使用 Matplotlib 绘制一条曲线。
代码语言:javascript代码运行次数:0运行复制import numpy as np
import matplotlib.pyplot as plt
# 创建数据
x = np.linspace(0, 10, 100) # 生成从0到10的100个点
y = np.sin(x)
# 创建图表
plt.plot(x, y, label='sin(x)') # 画出 x 对应 y 的曲线
# 添加图表标题和坐标轴标签
plt.title('Sine Wave')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
# 添加图例
plt.legend()
# 显示图表
plt.show()
Seaborn
Seaborn 是基于 Matplotlib 构建的,提供了更多美观且易于使用的高级图形界面。Seaborn 的设计是为了简化复杂的图形制作过程,并且默认设置更加美观。
安装 Seaborn
代码语言:javascript代码运行次数:0运行复制pip install seaborn
导入 Seaborn
代码语言:javascript代码运行次数:0运行复制import seaborn as sns
基本绘图
下面是一个使用 Seaborn 绘制简单条形图的例子。
代码语言:javascript代码运行次数:0运行复制import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 创建数据
data = {'Category': ['A', 'B', 'C', 'D'],
'Values': [10, 20, 30, 40]}
df = pd.DataFrame(data)
# 创建图表
sns.barplot(x='Category', y='Values', data=df)
# 添加标题和坐标轴标签
plt.title('Bar Plot Example')
plt.xlabel('Categories')
plt.ylabel('Values')
# 显示图表
plt.show()
更多高级图形
Seaborn 提供了许多高级图形,如热力图、箱型图、小提琴图等。下面是一些例子:
热力图
代码语言:javascript代码运行次数:0运行复制import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 创建数据
corr_matrix = np.random.rand(5, 5)
# 创建热力图
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
# 显示图表
plt.show()
箱型图
代码语言:javascript代码运行次数:0运行复制import seaborn as sns
import matplotlib.pyplot as plt
# 加载内置数据集
tips = sns.load_dataset("tips")
# 创建箱型图
sns.boxplot(x="day", y="total_bill", data=tips)
# 显示图表
plt.show()
小提琴图
代码语言:javascript代码运行次数:0运行复制import seaborn as sns
import matplotlib.pyplot as plt
# 加载内置数据集
tips = sns.load_dataset("tips")
# 创建小提琴图
sns.violinplot(x="day", y="total_bill", data=tips)
# 显示图表
plt.show()
若运行代码时出现错误:
检查网络连接:确保你的计算机连接到互联网且没有网络限制(访问国外网站)
使用代理:如果你在公司或学校网络中,可能需要配置代理。
手动下载数据集:从 Seaborn的GitHub页面 下载数据集,然后通过本地文件加载:
代码语言:javascript代码运行次数:0运行复制import seaborn as sns
import pandas as pd
# 手动下载并读取数据集
tips = pd.read_csv("path/to/your/tips.csv")
以上便是总结出的第一集!!包最正义的一集!!
制作总结不易,希望得到你们的三连支持!谢谢~
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-08-11,如有侵权请联系 cloudcommunity@tencent 删除数据数组机器学习函数基础本文标签: 机器学习速成第一集机器学习基础
版权声明:本文标题:机器学习速成第一集——机器学习基础 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754800778a1706624.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论