机器学习
文章平均质量分 65
小白tree
致力于成为图形学工程师的小白
展开
-
MiniAlphaGo黑白棋 蒙特卡洛搜索
输入:棋盘𝑏𝑜𝑎𝑟𝑑、当前执子方𝑐𝑜𝑙𝑜𝑟、搜索时间𝑡𝑖𝑚𝑒_𝑙𝑖𝑚𝑖𝑡、模拟策略𝑠𝑡𝑟𝑎𝑡𝑒𝑔𝑦创建蒙特卡洛树的根节点𝑟𝑜𝑜𝑡,表示当前棋局𝑏𝑜𝑎𝑟𝑑在搜索时间内,循环以下步骤生成蒙特卡洛树:原创 2022-11-27 21:11:36 · 1324 阅读 · 0 评论 -
详解GMM高斯混合模型EM模型
一般讲到GMM就会讲到EM。我不过多的介绍EM算法。这里只是举一些例子来看看真实的GMM怎么用EM算的。记住GMM的作用,就是聚类!hard-GMM和soft-GMM是为了对标k-means和soft k-means。在中文互联网上搜索到的GMM,其实基本都是soft-GMM。所以这里我先介绍一下hard-GMM。初始化两个簇权重分别为w1=2/6=1/3,w2=4/6=2/3w_1 = 2/6 = 1/3, w_2 = 4/6 = 2/3w1=2/6=1/3,w2=4/6=2/3.由此可知,两个原创 2022-11-27 20:11:36 · 1035 阅读 · 0 评论 -
决策树:ID3算法与CART算法的区别
我这里只从使用的准则出发且对于《统计学习方法》Page71例5.1来说。ID3——信息增益解:1.首先计算经验熵H(D)*设X是一个取有限个值的离散随机变量,其概率分布为P(X=xi)=pi,i=1,2,...,nP(X=x_i)=p_i, i=1,2,...,nP(X=xi)=pi,i=1,2,...,n*则随机变量X的熵定义:H(X)=−∑i=1npilog2(pi)H(...原创 2019-09-06 21:29:43 · 2316 阅读 · 1 评论 -
哪些机器学习模型需要归一化
归一化是对连续特征来说的。那么连续特征的归一化,起到的主要作用是进行数值缩放。数值缩放的目的是解决梯度下降时,等高线是椭圆导致迭代次数增多的问题。原创 2021-05-10 18:37:15 · 3792 阅读 · 2 评论 -
密度聚类:OPTICS算法简单易懂版
如何理解这张reach_dist—points图并实现分类样本点3,显然离样本点1的可达距离 < eps,那么归到与样本点0一类是没有问题的。如果你是这样想就错了!上面的例子没有给出噪声点样本。注意此时eps已不再是inf,而是依据图自定义的。从结果队列 $order\_list$ 按顺序取出样本点,直到结果队列为空:若该点的**可达距离 eps**,为噪声点若该点的**核心距离 < eps**,为新的聚类簇.........原创 2022-08-01 21:44:24 · 1685 阅读 · 1 评论 -
密度聚类:OPTICS算法详解
如何理解这张reach_dist—points图并实现分类样本点3,显然离样本点1的可达距离 < eps,那么归到与样本点0一类是没有问题的。如果你是这样想就错了!上面的例子没有给出噪声点样本。注意此时eps已不再是inf,而是依据图自定义的。从结果队列 $order\_list$ 按顺序取出样本点,直到结果队列为空:若该点的**可达距离 eps**,为噪声点若该点的**核心距离 < eps**,为新的聚类簇......原创 2022-07-30 11:36:18 · 5788 阅读 · 3 评论 -
获取XGBoost中树模型的最大深度
本文讲无论是否设置max_depth,怎么样查看XGBoost中各棵树模型的深度。查阅XGBoost文档可以发现,XGBoost并未提供像sklearn一样的get_depth()方法所以解决方法如下:1、绘图、查看图像得出(不够自动化)import xgboost as xgbfrom sklearn.datasets import make_classificationX,y = make_classification(random_state=99)# 上面的数据因人而异,这里构建的模原创 2022-02-20 23:27:34 · 1208 阅读 · 0 评论 -
机器学习中的验证集
在机器学习和深度学习中,验证集都是很常见的概念。但是显示的验证集似乎在使用sklearn的机器学习的模型上不常见,比如有train_test_split却没有train_validation_test_split。可能原因之一在于设计者为sklearn提供了交叉验证cross_validation和网格搜索Grid_search,给定参数池、交叉验证的折数和评价方式,就可以直接提供最优参数和最优得分。这一点可以去查阅相应的API。但,如果想要显示的体现验证集的参数调优,再在测试集上计算泛化误差。这一点原创 2022-01-31 19:29:25 · 2024 阅读 · 0 评论 -
速记混淆矩阵中的FP、FN、FP、TN
很多时候混淆矩阵中的这四个概念也很容易让人混淆。只需要记住:首字母 T / F 表示的是你预测对了True,还是错了False,次字母 P / N 表示的是你预测的标签为正Positive,还是负Negtive。接下来就好理解了:(1) TP(True Positive)真正:将正类预测为正类数,真实为0,预测也为0(2) FN(False Negative)假负:将正类预测为负类数,真实为0,预测为1(3) FP(False Positive)假正:将负类预测为正类数, 真实为1,预测为0原创 2021-04-25 20:52:10 · 5514 阅读 · 0 评论 -
关于sklearn决策树和随机森林的predict_proba方法的原理解释
注意,下述例子是针对一条测试样本,predict_proba方法会返回一个shape = (n_Y_test, n_classes)的矩阵,n_Y_test是测试集的样本条数,n_classes是分类数。一、对于决策树比如多分类的例子中,某一个叶子节点,包含的各类样本分别是{‘A’:1, ‘B’:2, ‘C’:7},那么预测的概率predict_proba就分别是{‘A’:0.1, ‘B’:0.2, ‘C’:0.7},如果使用的是predict方法,那就会选择概率最大的即C类。二、对于随机森林随机原创 2021-04-03 15:25:11 · 4882 阅读 · 1 评论 -
sklearn决策树/随机森林多分类绘制ROC和PR曲线
有篇讲解原理的博文/论文(可看可不看):《为什么Decision Tree可以绘制出ROC曲线?》1、数据,并要先one-hot多分类标签y_test = label_binarize(y_test, classes=[0, 1, 2, 3, 4])n_classes = y_test.shape[1] # 几分类(我这里是5分类)2、# 实例化决策树,基尼指数,训练集训练from sklearn.multiclass import OneVsRestClassifierdtc = O原创 2021-03-16 21:50:35 · 12184 阅读 · 8 评论 -
sklearn中的roc_auc_score(多分类或二分类)
首先,你的数据不管是库自带的如:from sklearn.datasets import load_breast_cancerX = data.dataY = data.target还是自备的如:# 读取csv数据data = pd.read_csv("MyData.csv")# 分离自变量与标签X = data.drop("score", axis=1).valuesY = data["score"].values都要注意保证你的数据都是numpy类型的对于二分类直接用Y原创 2021-03-12 20:43:49 · 20605 阅读 · 4 评论 -
理解sklearn决策树的clf.tree_结构(适用于随机森林)
一直想看看tree_到底是怎么个结构,搜索也没有个详细的讲解,在参考了官方文档后(没有我的详细,主要是讲怎么绘制路径的),自己试了挺久终于搞懂了。下面用随机森林的例子开始:RandomForestClassifier中的每棵树都相当于DecisionTreeClassifier的实例。from sklearn.model_selection import train_test_split, cross_val_score, KFold, GridSearchCVimport pandas as pd原创 2021-03-12 17:32:07 · 3240 阅读 · 4 评论 -
使用scikit-learn对csv数据文件构建随机森林并可视化
1、对数据进行处理并训练评估模型from sklearn.model_selection import train_test_split, cross_val_score, KFold, GridSearchCVimport pandas as pdimport numpy as npfrom sklearn.ensemble import RandomForestClassifier...原创 2020-04-20 21:29:31 · 2653 阅读 · 3 评论 -
使用scikit-learn对csv数据文件构建决策树并可视化
1、对数据进行处理并训练评估模型from sklearn.model_selection import train_test_split, cross_val_score, KFoldimport pandas as pdimport numpy as nppath = "你的csv.csv" # 5分类的data = pd.read_csv(path)# 打乱数据集from...原创 2020-04-20 21:28:08 · 3792 阅读 · 0 评论 -
数据样本不平衡时处理方法(imblearn实现,pandas/numpy转换)
def getDataAndSubsample(sample_strategy="under"): """ 获得数据并采样 :param sample_strategy: 采样策略 :return: Dataframe数据 """ # pandas读取 new_path = '../newData/结果/5#/t...原创 2020-04-01 21:32:27 · 1671 阅读 · 4 评论 -
机器学习——交叉验证实现多进程并行
一、前言1、众所周知,python因为其全局解释器锁GIL而无法通过线程实现真正的平行计算,所以我们不用python的多线程2、我没有用sklearn内置的机器学习库(sklearn或者xgboost可能内置了一些方便的参数,调用就可实现并行)2、对于我这样的懒人来说,看了multiprocess模块还是嫌麻烦。3、所以我推荐from concurrent.futures import P...原创 2020-03-27 11:36:48 · 1173 阅读 · 0 评论 -
分别用numpy和pandas划分数据集以完成交叉验证
先说个结论:使用numpy和pandas都可方便的使用sklearn的交叉验证函数cross_validation_score,但是pandas更好,可以用于更多的适应情况,比如自己写评估函数等。一、numpy版本# np.loadtxt读取label.csv(跳过表头),作为tmp_datatmp_data = np.loadtxt("data.csv", delimiter=',', s...原创 2020-03-25 16:57:00 · 2875 阅读 · 0 评论 -
sklearn中的模型评估(分类报告classification_report,混淆矩阵confusion_matrix,准确率acc,召回率recall等)
本文适用包括决策树在内的多个ML算法模型。1、二分类、多分类问题的precision、recall(1)在信息检索中,精确率通常用于评价结果的质量,而召回率用来评价结果的完整性。了解其概念,参考——《准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure》(2)在多分类问题应用这些概念,把每个类别单独视为"正",所有其它类型视为"负"。...原创 2020-03-22 21:32:36 · 6063 阅读 · 0 评论