采样  

SMOTE(Synthetic Minority Over-sampling Technique)一种广泛使用的过采样方法

SMOTE(Synthetic Minority Over-sampling Technique)是一种广泛使用的过采样方法,用于处理数据集中的类别不平衡问题。它通过在少数类样本之间插入新的合成样本来增加少数类的样本数量,从而平衡数据集。以下是SMOTE算法的详细介绍,包括其原理、实现方法和应用场景。 ### 原理 SMOTE算法的核心思想是通过在少数类样本之间插入新的合成样本来增加少数类的样本数量。具体步骤如下: 1. **选择少数类样本**:从少数类样本中随机选择一个样本 \( x_i \)。 2. **选择最近邻**:从 \( x_i \) 的最近邻中随机选择一个样本 \( x_j \)。 3. **生成合成样本**:在 \( x_i \) 和 \( x_j \) 之间生成一个新的合成样本 \( x_{\text{new}} \),计算公式为: \[ x_{\text{new}} = x_i + \lambda \times (x_j - x_i) \] 其中,\( \lambda \) 是一个随机数,范围在 \([0, 1]\) 之间。 4. **

Read more

文件夹命名规范,单数 or 复数?

<p>文件夹命名规范,单数 or 复数?</p><p><br/></p><p>目前很多项目开发时,文件夹命名随心所欲,有时单数有时复数。</p><p><br/></p><p>到底用单数还是复数,其实每个人都有自己的规范,目前也没有约定。</p><p><br/></p><p>不过个人建议使用单数,比较直观,比如命名为tool,认为tool是名词做修饰定语,相当于 tool files。</p><html_content xmlns="http://www.w3.org/1999/xhtml" class="view"></html_content>

Read more

画ROC曲线和计算AUC、准确率、召回率、F1等

代码如下: ``` python #!/usr/bin/env python # coding: utf-8 import sys from sklearn.metrics import roc_curve, auc, precision_score, recall_score, f1_score import matplotlib.pyplot as plt yTrue = list() yPred = list() yPredBinary = list() for line in open(sys.argv[1]): splits = line.strip().split("\t") if len(splits) < 2: continue label = [0, 1][int(splits[0])] yTrue.append(label) yPred.append(float(splits[1])) yPredBinary.append(float(splits[1]) > 0.5) precision =

Read more

TensorFlow 之计算图Graph的构建和执行

<p>计算图(Graph)用来表示计算任务。<br/></p><p><br/></p><p>图中的节点称为op(operation)。</p><p><br/></p><p>计算图必须在会话中启动,会话会把op分发到cpu或gpu等计算设备上进行执行,执行后会返回tensor。</p><p><br/></p><p>tensorflow程序一般分为两个阶段,构建计算图阶段和执行计算图阶段。</p><p><br/></p><h1>构建计算图阶段<br/></h1><p>构建计算图的第一步一般是构建源op(source op),源op不需要任何输入,如常量。</p><p><br/></p><p>源op的输出被传递给其他op做进一步运算。</p><p><br/></p><p>先来一个简单的实例</p><pre class="brush:python;toolbar:false">import&nbsp;tensorflow&nbsp;as&nbsp;tf #&nbsp;创建一个constant&nbsp;op,表示1*2的常量矩阵 op1&nbsp;=&nbsp;tf.constant([[1

Read more

深度学习之过拟合

## 什么是过拟合 过拟合是机器学习中的一个常见问题,是指模型预测准确率在训练集上升高,但是在测试集上的准确率反而下降,这通常意味着模型的泛化能力不好,过度拟合了训练集。 ## 如果防止过拟合 Dropout

Read more

制作标签

<p>样式代码:</p><pre class="brush:css;toolbar:false">.tag_list&nbsp;a{ &nbsp;&nbsp;&nbsp;&nbsp;text-align:&nbsp;center; &nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;70px; &nbsp;&nbsp;&nbsp;&nbsp;border:&nbsp;1px&nbsp;solid&nbsp;#DAD9D1; &nbsp;&nbsp;&nbsp;&nbsp;display:&nbsp;inline-block; &nbsp;&nbsp;&nbsp;&nbsp;margin:&nbsp;5px; &nbsp;&nbsp;&nbsp;&nbsp;border-radius:&nbsp;3px; }</pre><p><br/></p>

Read more

抽象类和接口的相同点和区别

[TOC] ## 相同点 1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。抽象类要被子类继承,接口要被类实现。 ## 什么时候使用抽象类和接口 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用**抽象类**吧。 如果基本功能在不断改变,那么就需要使用**抽象类**。 如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。 如果你想实现多重继承,那么你必须使用**接口**。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。 ## 参考 - [接口和抽象类有什么区别](http://www.cnblogs.com/yongjiapei/p/5494894.html)

Read more

离线升级GCC

## 参考 - [离线升级gcc至最新!目前是6.3](http://blog.csdn.net/zouwei678/article/details/64439168) - [centos升级gcc到4.8.1(支持c++11)步骤](https://github.com/qiwsir/ITArticles/blob/master/Linux/upgrade_gcc_on_Centos.md)

Read more

1.1 Node.js 介绍

<p><br/></p><p>简单的说 Node.js 就是运行在服务端的 JavaScript。</p><p>Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。</p><p>Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。</p><p><br/></p><p>参考:</p><p><a href="http://www.runoob.com/nodejs/nodejs-tutorial.html">http://www.runoob.com/nodejs/nodejs-tutorial.html</a> </p><p><br/></p>

Read more