目录
机器学习基础
机器学习概览
什么是机器学习?
机器学习是人工智能的一个分支,它使计算机能够从经验中自动“学习”而无需明确编程。简而言之,机器学习是一种让计算机通过数据进行自我改进的方法。
机器学习的应用领域
机器学习的应用非常广泛,涵盖了从图像识别、语音识别到自然语言处理等多个领域。具体应用包括:
图像识别:用于人脸识别、物体检测等。
语音识别:用于语音助手、语音转文字等。
自然语言处理:用于情感分析、机器翻译、聊天机器人等。
推荐系统:用于电子商务网站上的产品推荐。
欺诈检测:用于信用卡欺诈检测、网络攻击检测等。
机器学习的主要类型
监督学习
给定带有标签的数据集,学习如何预测未知数据的标签
无监督学习
没有标签的数据集,目标是从数据中发现潜在的结构
半监督学习
介于监督学习和无监督学习之间,数据集包含少量带标签的数据和大量未带标签的数据。
强化学习
智能体通过与环境互动学习策略,以最大化某种累积奖励。
数学基础复习
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库介绍
详细介绍请看我的《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库介绍
详细介绍请看我的《Pandas库》这篇文章:
下面只用代码示例介绍一些基本的用法(上方为自己实践所得,下方是给的示例,看清楚,不一样的):
-
创建Series:
import pandas as pd # 从列表创建Series s = pd.Series([1, 3, 5, np.nan, 6, 8]) print(s)
-
创建DataFrame:
# 从字典创建DataFrame data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8], 'C': [9, 10, 11, 12]} df = pd.DataFrame(data) print(df)
-
查看数据信息:
# 查看前几行数据 print(df.head()) # 查看数据统计信息 print(df.describe())
-
数据筛选:
# 选择某一列 column_A = df['A'] print(column_A) # 选择多列 columns_AB = df[['A', 'B']] print(columns_AB) # 选择行 row = df[df['A'] > 2] print(row)
-
数据清洗:
# 删除缺失值 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)
-
数据聚合:
# 按列求和 sum_column = df.sum(axis=0) print(sum_column) # 按行求和 sum_row = df.sum(axis=1) print(sum_row)
-
数据合并:
# 水平合并 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)
-
数据排序:
'''排序并不会改变缺失值的位置,而是在排序结果中相应位置进行排序''' # 按某一列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)
'''使用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)
'''在使用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)
-
数据分组求和:
# 按某一列分组 grouped = df.groupby('A').sum() print(grouped) #按多列分组 grouped1=df.groupby(['A','B']).sum() print(grouped1)
上述例子可能不太清楚,接下来举一个更加清楚的例子:
实操:
数据:
Category Subcategory Value
A X 10
A Y 20
B X 30
B Y 40
C X 50
C Y 60
单组结果:
Value
Category
A 30
B 70
C 110
'''数据按'Category'列进行分组。每个类别(A, B, C)的所有'Value'值被求和。
结果显示每个'Category'组中'Value'的总和。'''
多组结果:
Value
Category Subcategory
A X 10
Y 20
B X 30
Y 40
C X 50
Y 60
'''数据按照'Category'和'Subcategory'这两列进行分组。
每个'Category'和'Subcategory'的组合对应的'Value'值被求和。
结果显示每个组合中的'Value'总和。'''
总代码:
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库》这篇文章:
安装 Matplotlib
pip install matplotlib
导入 Matplotlib
import matplotlib.pyplot as plt
基本绘图
下面是一个简单的示例,展示如何使用 Matplotlib 绘制一条曲线。
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库》这篇文章:
安装 Seaborn
pip install seaborn
导入 Seaborn
import seaborn as sns
基本绘图
下面是一个使用 Seaborn 绘制简单条形图的例子。
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 提供了许多高级图形,如热力图、箱型图、小提琴图等。下面是一些例子:
热力图
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()
箱型图
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()
小提琴图
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页面 下载数据集,然后通过本地文件加载:
import seaborn as sns import pandas as pd # 手动下载并读取数据集 tips = pd.read_csv("path/to/your/tips.csv")
以上便是总结出的第一集!!包最正义的一集!!
制作总结不易,希望得到你们的三连支持!谢谢~