机器学习
文章平均质量分 51
笔记
WGS.
道阻且长,与君共勉:你若对得起时间,时间便会对得起你。
展开
-
多分类评估指标计算
多分类评估指标计算、代码原创 2022-10-28 10:27:43 · 2722 阅读 · 2 评论 -
pyspark---低频特征处理
pyspark---低频特征处理demo示例原创 2022-06-14 11:05:06 · 300 阅读 · 1 评论 -
pyspark---对suuid区间编码(基于曝光数、点击数)
pyspark---对suuid区间编码原创 2022-06-07 16:15:13 · 343 阅读 · 0 评论 -
异常检测 IsolationForest 返回概率
from sklearn.ensemble import IsolationForestIsolationForest().fit()IsolationForest().predict()IsolationForest().decision_function()def sigmoid(x): return 1.0/(1+np.exp(-x))print(sigmoid(-3))print(sigmoid(3))我们来看predict文档: def predict(sel原创 2022-05-06 16:48:49 · 587 阅读 · 0 评论 -
XGB+FM、XGB+FFM代码实现(FM、FFM基于xlearn、pylibfm实现)
文章目录假数据XGB+FMXGB+FFM保存modelXGB+FM 同 GBDT+LR 原理一致,原理解释可看下面这篇文章,本文只分享XGB+FM的代码实现demohttps://blog.csdn.net/qq_42363032/article/details/112756687假数据from sklearn.linear_model import LogisticRegressionfrom sklearn.preprocessing import OneHotEncoderfrom skl原创 2022-04-13 13:44:19 · 1038 阅读 · 0 评论 -
Exception: Please install CMake first
Exception: Please install CMake first在pip install xlearn的时候报错,要先安装CMakepip install CMakehttps://blog.csdn.net/datadev_sh/article/details/105905686原创 2022-04-11 14:32:16 · 1078 阅读 · 0 评论 -
基于AdaBoostSVM的不平衡数据训练(原理+代码,超详细)
文章目录Boosting思想AdaBoostSVM最大间隔支持向量 & 支持向量平面寻找最大间隔AdaBoostSVM代码实现Boosting思想 Boosting一族是可将弱学习器提升为强学习器的算法,它的思想就是每一个基分类器纠正前一个基分类器的错误,至于纠正的方式不同所以有不同的boosting算法。算法思想如下:1.先从训练集训练出一个基学习器。2.再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续得到较大的关注。3.然后基于调整后的样本分布来训原创 2022-04-08 14:58:35 · 2830 阅读 · 0 评论 -
XGB 训练的时候添加自定义eval_metric:f1、准确率,并对样本、特征加权训练
文章目录XGB 训练的时候添加自定义eval_metric:f1、准确率,并对样本、特征加权训练随机搜索XGB 训练的时候添加自定义eval_metric:f1、准确率,并对样本、特征加权训练以下demo重点说明:eval_metric:用以训练的时候评估,必须要指定验证集,本博文分享自定义准确率、f1verbose:训练的时候对验证集评估是否打印,True和1等价,比如verbose=10,就会打印n_estimators // 10次feature_weights:特征加权训练,给一个sof原创 2022-04-07 16:35:01 · 5759 阅读 · 1 评论 -
原生LGB训练demo
文章目录假数据生成原生LGB训练sklearn LGB训练随机搜索调参假数据生成from sklearn.feature_selection import VarianceThresholdfrom sklearn.feature_selection import SelectKBest, f_classif, chi2from sklearn.feature_selection import RFEfrom xgboost.sklearn import XGBClassifierfrom li原创 2022-04-07 10:51:08 · 2009 阅读 · 0 评论 -
pyspark 基于分位数的异常值剔除
文章目录先解释下四分位数如何通过四分位数判断一组数据中的异常值代码实现先解释下四分位数如何通过四分位数判断一组数据中的异常值通过 Tukey’s Test方法计算,此方法可用于识别一组数据中的异常值:具体方法如下:其中Q3代表上四分位数,Q1代表下四分位数,k代表系数,可以取值1.5或3。最大值估计= Q3+k(Q3-Q1)最小值估计= Q1-k(Q3-Q1)当k=3时,代表极度异常值;当k=1.5时,代表中度异常值。代码实现异常值:不属于正常的值 包含:缺失值,超过正常范围内原创 2022-03-28 18:07:18 · 1999 阅读 · 0 评论 -
基于 pyspark 的编码、归一化、特征选择代码demo
文章目录pysparkencode用编码规则预估测试特征选择:方差过滤、卡方检验、树模型特征重要性sklearn特征选择pysparkencodelabel编码、归一化from pyspark.ml.feature import ChiSqSelectorfrom pyspark.ml.classification import GBTClassifier, DecisionTreeClassifierfrom pyspark.ml.feature import MinMaxScaler as原创 2022-03-26 14:38:50 · 2706 阅读 · 0 评论 -
pyspark 对df的某一列求方差
tmplst = [{'id': '1', 'f1': 'fff1', 'f2': 0.8, 'y': 1}, {'id': '2', 'f1': 'fff2', 'f2': 0.1, 'y': 0}, {'id': '3', 'f1': 'fff2', 'f2': 0.9, 'y': 0}, {'id': '4', 'f1': 'fff1', 'f2': 3.6, 'y': 1}, {'id': '5', 'f1':原创 2022-03-26 10:52:55 · 939 阅读 · 0 评论 -
样本不平衡的解决方案(很详细)
文章目录1. 样本不平衡的影响2. 可尝试的改进方案2.1 采样2.2 数据增强2.3 loss2.4 模型层面2.5 评估指标1. 样本不平衡的影响 举个例子,在广告CTR预估场景中,正负样本的占比可以达到1:500,点击的正样本是少数类,没点击的负样本为多数类。如果直接拿这个比例去训练模型的话,很容易学出一个把所有样本都预测为负的模型,因为喂进去学习的样本大多都是负样本。这种情况下,损失会很低,准确率一般都会很高,比如0.98,但是F1会很低,比如0.01。你可以理解为,模型最终学习的并不是如何原创 2022-03-21 21:16:36 · 10668 阅读 · 0 评论 -
pyspark、pandas 1:n采样
pysparkdef data_sample_(df, n): # 正负样本比 df_c = df.count() print(' 样本量:', df_c) df_pos = df.filter(df.y == 1) df_neg = df.filter(df.y == 0) df_pos_c = df_pos.select('y').count() df_neg_c = df_neg.select('y').count() print('原创 2022-03-14 16:22:31 · 3457 阅读 · 0 评论 -
sklearn setting an array element with a sequence.
sklearn onehot后和原来特征一起fithttps://blog.csdn.net/qq_42363032/article/details/123406747原创 2022-03-10 17:27:18 · 1415 阅读 · 0 评论 -
sklearn onehot后和原来特征一起fit
from sklearn.preprocessing import OneHotEncoderddd2 = pd.DataFrame({'f1': [1, 2, 3, 4, 5, 6], 'f2': ['你', '我', '他', '你', '我', '她'], 'y': [1, 1, 1, 0, 0, 0]})ddd2one = OneHotEncoder()ddd2['f2'] = one.fit_transform(ddd2['f2'].values.reshape(-1, 1))ddd2原创 2022-03-10 17:25:54 · 2073 阅读 · 0 评论 -
pyspark mllib 编码、训练、评估流程示例
直接上代码,希望能帮到你from pyspark.ml.feature import MinMaxScaler as MinMaxScalerSpark, VectorAssemblerfrom pyspark.ml.classification import GBTClassifier, GBTClassificationModelfrom pyspark.ml.evaluation import BinaryClassificationEvaluator, MulticlassClassifica原创 2022-03-08 09:55:07 · 576 阅读 · 0 评论 -
pyspark mllib 二分类是以softmax作为输出的解释
直接上代码我用的是GBDT,预测结果如下:只给出关键代码gbdt = GBTClassifier(featuresCol="features", labelCol="y", predictionCol="prediction",)df_train_eval = model.transform(df_train)df_train_eval.select(*['y', 'rawPrediction', 'probability', 'prediction']).show(truncate=Fa原创 2022-03-07 15:44:05 · 2464 阅读 · 0 评论 -
pyspark 划分训练集、验证集、测试集(全网之最)
直接上代码,希望能帮到你def pos_neg_rate(df): sample_c = df.count() sample_pos_c = df.filter(df.y == 1).count() sample_neg_c = df.filter(df.y == 0).count() pos_rate_sample = sample_pos_c / sample_c neg_rate_sample = sample_neg_c / sample_c ret原创 2022-03-07 10:41:06 · 3518 阅读 · 0 评论 -
pyspark 编码,评估 transform时遇到新值的解决办法
文章目录问题描述解决办法问题描述在用spark进行大规模机器学习的时候,无论是label编码还是onehot,都会遇到这个问题:预测的时候遇到新值(没有出现在编码规则里的新值)的问题。解决办法在sklearn里的解决办法请看:https://blog.csdn.net/qq_42363032/article/details/121514951目前是想到了一个比较本的法子:1.找到新值2.处理新值假数据如下:from pyspark.ml.feature import StringI原创 2022-03-05 15:18:40 · 1262 阅读 · 0 评论 -
ValueError: y contains new labels: [326]
sklearn的label编码的时候,遇到新值,没有fit过的问题,如上新值326,打印编码规则如下:lab_dict = dict(zip(lab.classes_, lab.transform(lab.classes_)))print(lab.classes_)print(lab_dict)[ 0 43 51 630 631 635 765 781 819 843]{0: 0, 43: 1, 51: 2, 630: 3, 631: 4, 635: 5, 765: 6, 781: 7,.原创 2022-03-03 15:53:03 · 1028 阅读 · 0 评论 -
二分类问题中的评估指标,附代码(超详细)
文章目录具体参考:二分类指标汇总混淆矩阵精确率、召回率、F1准确率对数损失AUCGAUCks样本不平衡时的可用指标考虑负样本的F1SpecificityG-MeanMCC具体参考:https://blog.csdn.net/qq_42363032/article/details/120070512https://blog.csdn.net/qq_42363032/article/details/110449592import numpy as npfrom sklearn.metrics impo原创 2022-02-18 09:35:58 · 5828 阅读 · 1 评论 -
哈达玛积 Hadamard Product
Hadamard Product是一种矩阵乘法:m x n矩阵A = [aij]与矩阵B = [bij]的Hadamard积,记为A * B 。新矩阵元素定义为矩阵A、B对应元素的乘积(A * B)ij = aij*bij。当矩阵A、矩阵B为同阶矩阵时,两矩阵的哈达玛积为对应位置元素相乘https://baike.baidu.com/item/%E5%93%88%E8%BE%BE%E7%8E%9B%E7%A7%AF/18894493?fr=aladdin...原创 2022-01-17 14:06:56 · 7555 阅读 · 0 评论 -
train_test_split 划分数据集,并保证正负样本比一致
重点:# 8:2划分数据集# stratify=data_y:保证划分后训练集、测试集的正负样本比和原始数据一致X_train, X_test, y_train, y_test = train_test_split(data_X, data_y, test_size=0.2, random_state=0, stratify=data_y)演示代码:from sklearn.model_selection import train_test_splitimport pandas as pd原创 2021-12-30 10:51:09 · 3853 阅读 · 0 评论 -
multi-hot实现
Multi-hot举例理解:人的性别属性有男女两种,性格属性有乐观、悲观、和善、麻木,如果一个人,是男生,性格是乐观、和善的,那他可以用向量表示成:性别:[1,0]性格:[1,0,1,0]from sklearn.preprocessing import MultiLabelBinarizery = [[2,3,4],[2],[0,1,3],[0,1,2,3,4],[0,1,2]] # 假设y就是不同uid的观影偏好类别MultiLabelBinarizer().fit_transform原创 2021-12-28 15:02:08 · 2718 阅读 · 0 评论 -
训练可视化
文章目录带点好看一张画图,4个子图import matplotlib.pyplot as plt带点好看def plot_metric(history, metric): train_metrics = history.history[metric] val_metrics = history.history['val_'+metric] epochs = range(1, len(train_metrics) + 1) plt.plot(epochs, train_原创 2021-12-27 11:21:32 · 1986 阅读 · 0 评论 -
连续特征分布直方图,并正太化,代码实现
import pandas as pd, numpy as np, warningspd.set_option('display.max_columns', 100)pd.set_option('display.width', 230)import seaborn as snsfrom scipy import stats, integrateimport matplotlib.pyplot as pltfrom scipy.stats import shapiro, kstestfrom s原创 2021-11-26 15:18:31 · 1973 阅读 · 0 评论 -
机器学习正负样本失衡时的评估指标参考,及代码实现
文章目录混淆矩阵GAUC修改F1SpecificityG-MeanMCC----GAUC代码实现修改F1代码实现MCC代码实现参考自:https://www.zhihu.com/question/428547855https://www.jianshu.com/p/7919ef304b19混淆矩阵预测结果真实结果正例反例正例TP(真正例)FN(假反例)反例FP(假正例)TN(真反例)F1=2∗P∗RP+RF1 = \frac{2 * P *原创 2021-11-26 15:00:27 · 2249 阅读 · 2 评论 -
机器学习中样本不平衡的解决方案
文章目录采样正样本过采样正样本smote负样本欠采样基于聚类的随机采样(CBO)SMOTEBoost(采样方法和集成学习的集成)将二分类看成一分类或异常检测问题focal lossimbalance-XGBoost正负样本失衡时的评估指标注:本文中,将大众样本视为负样本,小众样本视为正样本。即正样本很少,负样本很多。采样首先最基本的就是采样,分为过采样和欠采样。正样本过采样1.如果随机的复制多分正样本进行过采样,那么必然会导致过拟合,因为训练数据中的正样本会反复出现。这种做法不建议。2.可以通原创 2021-11-26 14:53:49 · 2180 阅读 · 0 评论 -
sklearn-LabelEncoder 遇到没在编码规则里的新值的解决办法
sklearn的LabelEncoder,当transform的时候,遇到没在fit后的编码规则里的新值,会报错,它不像spark的LabelEncoder碰到新值会给你编成len+1。提供两种解决办法:重写LabelEncoder(不推荐)相信你肯定看过这个文章:https://blog.csdn.net/qq_19446965/article/details/120110169from sklearn.preprocessing import LabelEncoder as LEncoder原创 2021-11-24 14:43:43 · 2161 阅读 · 0 评论 -
sklearn 将onehot之后的结果拼接回原来的dataframe
data = {'hour': [10, 9, 8, 11, 12, 18, 20], 'WHrate': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7]}data = pd.DataFrame(data)dataonehot = OneHotEncoder()arrays = onehot.fit_transform(np.array(data['hour']).reshape(-1, 1))arrays = arrays.toarray()names = ['原创 2021-11-17 14:27:04 · 2849 阅读 · 1 评论 -
将两个one-hot后的稀疏矩阵拼接
文章目录假数据构造one-hot拼接one-hot后的稀疏矩阵思路一思路二import pandas as pd, numpy as np, warningsfrom sklearn.ensemble import GradientBoostingClassifierfrom sklearn.preprocessing import OneHotEncoderwarnings.filterwarnings("ignore", category=DeprecationWarning)假数据构造原创 2021-11-09 14:52:05 · 981 阅读 · 0 评论 -
kstest 检验数据是否符合正态分布
文章目录KS检验kstest方法直接用KS检验使用K-S检验一个数列是否服从正态分布、两个数列是否服从相同的分布https://www.cnblogs.com/chaosimple/p/4090456.htmlkstest方法直接用from scipy import stats# scipy包是一个高级的科学计算库,它和Numpy联系很密切,Scipy一般都是操控Numpy数组来进行科学计算data = [87,77,92,68,80,78,84,77,81,80,80,77,92,86,原创 2021-11-08 11:16:46 · 12758 阅读 · 5 评论 -
机器学习-常用回归算法归纳(全网之最)
文章目录前言一元线性回归多元线性回归局部加权线性回归多项式回归Lasso回归 & Ridge回归Lasso回归Ridge回归岭回归和lasso回归的区别L1正则 & L2正则弹性网络回归贝叶斯岭回归Huber回归KNNSVMSVM最大间隔支持向量 & 支持向量平面寻找最大间隔SVRCART树随机森林GBDTboosting思想AdaBoost思想提升树 & 梯度提升GBDT面试题整理XGBOOST面试题整理LightGBMXGBoost的缺点LightGBM的优化基于Hist原创 2021-10-28 18:14:11 · 22873 阅读 · 5 评论 -
基于pyspark的用户id训练Word2Vec生成id Embedding
需求将用户id、广告id做成embedding思路:用户id embedding根据广告id分组统计每个广告id下,有点击的用户id,并根据用户id的点击次数,降序将用户id的序列返回,形成一个序列向量将用户id的序列向量训练word2vec,得到每个用户id的词向量用户id embedding完成广告id embedding思路一样Word2vec关于word2vec原理看这篇文章,这里不再阐述https://blog.csdn.net/qq_42363032/ar原创 2021-10-28 17:16:38 · 1850 阅读 · 2 评论 -
pyspark 变量分箱代码实现
直接上代码:from pyspark.ml.feature import QuantileDiscretizerlis = [{'cli': 11}, {'cli': 0}, {'cli': 0}, {'cli': 3}, {'cli': 100}, {'cli': 76}, {'cli': 23}, {'cli': 2}, {'cli': 800}, {'cli': 9}, {'cli': 10}, {'cli': 100}, {'cli': 339}, {'cli': 678},原创 2021-10-28 16:48:59 · 2450 阅读 · 0 评论 -
高维稀疏时,线性模型比非线性效果好的原因
现在的GBDT和LR的融合方案真的适合现在的大多数业务数据么?现在的业务数据是什么?是大量离散特征导致的高维度离散数据。而树模型对这样的离散特征,是不能很好处理的,要说为什么,因为这容易导致过拟合。下面的一段话来自知乎:https://www.freesion.com/article/2770862148/...转载 2021-09-27 14:24:16 · 461 阅读 · 0 评论 -
cannot import name ‘SparseFeat‘ from ‘deepctr.inputs‘
---------------------------------------------------------------------------ImportError Traceback (most recent call last)<ipython-input-5-5a794cf2cfcc> in <module> 3 from sklearn.model_selection import train原创 2021-09-15 14:33:32 · 1079 阅读 · 0 评论 -
pyspark --- 归一化&Label编码
文章目录Label编码代码归一化代码以下代码块直接调用即可from pyspark.ml.feature import StringIndexer, StringIndexerModelfrom pyspark.ml import Pipeline, PipelineModelfrom pyspark.ml.feature import MinMaxScaler as MinMaxScalerSpark, VectorAssemblerLabel编码代码# label编码def labe原创 2021-09-13 16:16:18 · 1520 阅读 · 2 评论 -
pyspark---label编码
from pyspark.ml.feature import OneHotEncoder, StringIndexer, StringIndexerModeldf = ss.createDataFrame([ (2, "iphone"), (11, "小米"), (22, "huawei"), (33, "a锤子"), (66, "小米"), (50, "iphone")], ["id", "value"])df.show()+---+------原创 2021-09-09 14:50:35 · 532 阅读 · 0 评论