Machine Learning
Machine Learning
建议学习资料:https://github.com/chengyingshe/ai_learning
main
分支中有使用仓库的介绍,ml
分支为机器学习部分
监督式学习
KNN算法
K最近邻算法
计算一个新的特征点在训练数据集中距离其最近的K个点中种类最多的类别(label)作为该点的类别(label)。
严格意义上该算法并没有学习能力
# sklearn实现KNN算法 from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors) knn.fit(features, labels) knn.predict(<test_data>) # <test_data>必须是一个数组(batch)
决策树算法
-
信息熵:
-
缺点:
容易发生过拟合(需要进行剪枝等操作)
对数据的抖动变化明显
# 使用sklearn实现决策树算法 from sklearn.tree import DecisionTreeClassifier classifier = DecisionTreeClassifier(max_depth) classifier.fit(features, labels) # features中的元素必须都是数值类型的(需要对字符串类型的数据进行编码) classifier.predict(<test_data>)
朴素贝叶斯算法
-
词集模型(set-of-words)
-
词袋模型(bag-of-words)
每个单词在词集中只能出现0或1次,在词袋模型中可以出现多次
文档编码
from sklearn.feature_extraction.text import CountVectorizer # 创建一个文本向量编码器() vectorizer = CountVectorizer() X = vectorizer.fit_transform(documents)
Logistic回归
SVM分类器
使用线性方程来表示多维空间下的超平面:
其中 w 为法向量,决定了超平面的方向 b 为位移项,决定
了超平面与原点之间的距离
样本主 间中任意点 到超平面 (w, b) 的距离可写为
元算法
将多个分类器组合起来的方法 (meta-algorithm),用于提升模型性能
-
AdaBoost (adaptive boosting) 算法
分类器训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量 D ,AdaBoost为每个分类器都分配了一个权重值
(单调递减函数, 越大, 越小,分配的权重越小)
相关知识补充
数据编码
# 数据编码 from sklearn.preprocessing import LabelEncoder, OneHotEncoder import numpy as np le = LabelEncoder() # 将字符串类型的数据进行编码(先进行排序,然后选用index) le.fit_transform(['aaa', 'bbb', 'eee', 'ddd']).tolist() ohe = OneHotEncoder() # 将字符串类型的数据进行one-hot vector编码 # 传入的字符串数组的shape必须是 n x 1 ohe.fit_transform(np.array(['aaa', 'bbb', 'eee', 'ddd']).reshape(-1, 1)).toarray()
数据填充(填充数据集中的缺失值)
模型性能度量指标
- TP(true positive)
- FP(false positive)
- TN(true negative)
- FN(false negative)
-
正确率
-
召回率
-
ROC曲线
横轴:
纵轴:
AUC:ROC曲线下的面积(面积(0~1)越大说明分类器越好)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人