Logistic回归算法

一、前言

Logistic回归虽然名字上是叫回归,但其实它是一种分类算法。Logistic回归也在一些文献中也称为logit回归、最大熵分类(MaxEnt)或对数线性分类器。

“回归”的意思就是要找到最佳拟合参数,其中涉及的数学原理和步骤如下:

  1. 需要一个合适的分类函数来实现分类。可以使用单位阶跃函数或者Sigmoid函数。
  2. 代价函数 来表示 预测值h(x)实际值y 的偏差 (h−y)。要使得回归最佳拟合,那么偏差要尽可能小(偏差求和或取均值)。
  3. 记J(w,b)表示回归系数取w时的偏差,那么求最佳回归参数w,b就转换成了求J(w,b)的最小值。可以使用梯度下降法求回归参数w,b。

所以,接下来就围绕这几个步骤进行展开。

查看更多

评论

朴素贝叶斯分类算法实践-垃圾邮件过滤器

一、前言

这个例子中,我们将了解朴素贝叶斯的一个最著名的应用:电子邮件垃圾过滤。

首先看一下使用朴素贝叶斯对电子邮件进行分类的步骤:

  1. 收集数据:提供文本文件。
  2. 准备数据:将文本文件解析成词条向量。
  3. 分析数据:检查词条确保解析的正确性。
  4. 训练算法:使用我们之前建立的trainNB0()函数。
  5. 测试算法:使用classifyNB(),并构建一个新的测试函数来计算文档集的错误率。
  6. 使用算法:构建一个完整的程序对一组文档进行分类,将错分的文档输出到屏幕上。

查看更多

评论

线性回归算法


THE END.

评论

朴素贝叶斯分类算法实践-言论过滤器

一、前言

以在线社区留言为例。为了不影响社区的发展,我们要屏蔽侮辱性的言论,所以要构建一个快速过滤器,如果某条留言使用了负面或者侮辱性的语言,那么就将该留言标志为内容不当。过滤这类内容是一个很常见的需求。对此问题建立两个类型:侮辱类和非侮辱类,使用1和0分别表示。

查看更多

评论

Numpy 常用功能简介

一、创建ndarray

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])

# np.ones(x):创建一个长度为x,且元素全为1的ndarray
c = np.ones(2,dtype = np.int)
[1, 1]

# np.ones(x,y):创建一个长度为x行y列,且元素全为1的ndarray
d = np.ones((3,2))
[[1., 1.],
[1., 1.],
[1., 1.]]

# np.zeros(x,y):创建一个x行y列且元素全为0的ndarray
e = np.zeros((3,2))
[[0., 0.],
[0., 0.],
[0., 0.]]

# np.empty(x,y):创建一个x行y列且未初始化的ndarray(随机数填充数据)
f = np.empty((1,2), dtype = int)
[[4607182418800017408, 4607182418800017408]]

# 使用 np.arange 生成连续元素的ndarray
g = np.arange(6) #从0到6,默认间隔(步长)为1
[0, 1, 2, 3, 4, 5]

h = np.arange(0,6,2) #从0到6,间隔为2,不包括6
[0, 2, 4]

查看更多

评论

Matplotlib

一、2D 图形

1. 画一个简单的图形
1
2
3
4
5
6
7
8
9
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

x = np.linspace(0, 2 * np.pi, 50) #生成一个包含 50 个元素的数组,这 50 个元素均匀的分布在 [0, 2pi] 的区间上。
plt.plot(x, np.sin(x)) # 如果没有第一个参数 x,图形的 x 坐标默认为数组的索引
plt.plot(x, np.sin(x),
x, np.sin(2 * x)) #绘制两个数据集
plt.show() # 显示图形

0503_simple

查看更多

评论

朴素贝叶斯分类算法原理

一、朴素贝叶斯分类简介

朴素贝叶斯(Naive Bayesian)是基于贝叶斯定理和特征条件独立假设的分类方法,它通过特征计算分类的概率,选取概率大的情况进行分类,因此它是基于概率论的一种机器学习分类方法。因为分类的目标是确定的,所以也是属于监督学习。

朴素贝叶斯有如下几种:

  • 离散型朴素贝叶斯: MultinomialNB
  • 连续型朴素贝叶斯: GaussianNB
  • 混合型朴素贝叶斯: MergedNB

查看更多

评论

平衡二叉树的旋转及其代码实现

平衡二叉树的构造问题以及为了维护它的平衡所要进行的LL旋转、RR旋转、LR旋转、RL旋转。

查看更多

评论

机器学习构建chatbot

预备知识

机器人应答逻辑(Logic Adapter),针对每个部分设计了不同的适配器

  1. Closet Match Adapter:字符串模糊匹配(编辑距离)
  2. Closet Meaning Adapter:借助nltk的WordNet,近义词评估
  3. Time Logic Adapter:处理涉及实践的提问
  4. Mathematical Evaluation Adapter:涉及数学运算

存储器后段(Storage Adapter)

  1. Read Only Mode:只读模式
  2. Json Database Mode:Json格式存储对话数据
  3. Mongo Database Mode:以MongoDb方式存储对话数据库

输入形式(Input Adapter)

  1. Variable input type Adapter:允许chatbot接收不同类型的输入
  2. Terminal Adapter:以终端方式进行对话
  3. HipChat Adapter:通过HipChat聊天室和chatbo进行对话
  4. Speech recognition:语音识别输入

输出形式(Output Adapters)

  1. Output format adapter:支持text,json和object格式的输出
  2. Terminal adapter
  3. HipChat Adapter
  4. Mailgun adapter:允许chat bot基于Mailgun API进行邮件的发送 Speech synthesis
  5. TTS(Text to speech)部分,详见chatterbot-voice

查看更多

评论

NLP基础

NLTK

NLTK在NLP上的应用

  • 情感分析
  • 文本相似度
  • 文本分类

查看更多

评论

KNN 简介

一、前言

k-近邻算法(kNN,k-NearestNeighbor),是一种监督分类算法,是最简单的机器学习分类算法之一。其核心思想在于用距离目标最近的 k 个样本数据的分类来代表目标的分类(这k个样本数据和目标数据最为相似)。kNN 是一种惰性学习方法

k-近邻算法的缺点是对数据的局部结构非常敏感

查看更多

评论

感知机 简介

一、感知机模型

感知机(perceptron)是一种二分类的线性分类模型,它是一种监督式学习算法。感知机的输入为实例的特征向量,输出为实例的类别(取+1和-1)。感知机对应于输入空间中将实例划分为两类的分离超平面 S。感知机旨在求出该超平面 S,为求得超平面导入了基于误分类的损失函数,利用梯度下降法对损失函数进行最优化(最优化)。

感知机也是 Neural Networks(神经网络)SVM(支持向量机) 的基础,它是一个单层神经网络。

感知机的模型如下:

其中 w 叫做权值(weight)或权值向量(weight vector),b 叫做偏置(bias),sign 是符号函数,即:

而分割超平面则为:

查看更多

评论

线性代数陌生公式

  1. $\left(kA\right)^{\ast}=k^{n-1}A^{\ast}$

  2. $|A^{\ast}|=|A|^{n-1}$

  3. $|kA|=k^{n}|A|$

查看更多

评论

线性代数难点题型

1. 关于矩阵的n阶的题型

(1) 如果$A=αβ^{T}$,其中α和β是n维非零列向量,则$A^{n}=l^{n-1}A$,其中$l=β^{T}α=tr(A)$

(2) 如果$A=\begin{pmatrix}
0 & a & c \\
0 & 0 & b \\
0 & 0 & 0
\end{pmatrix}$,则$A^{2}=\begin{pmatrix}
0 & 0 & ab \\
0 & 0 & 0 \\
0 & 0 & 0
\end{pmatrix}$,$A^{3}=0$,$A^{4}=0$…

(3) 如果$A \sim B$,则$A^{n} \sim B^{n}$,于是$A^{n} \sim P^{-1}B^{n}P$,其中B是对角矩阵。

(4) 用归纳法:先求 $A^{2},A^{3}$ 等,看出规律,再求 $A^{n}$

查看更多

评论

动态规划-数对之差最大值

题目描述

在数组中,某个数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如,在数组{2,4,1,16,7,5,11,9}中,数对之差的最大值是11,是16减去5的结果。

查看更多

评论

201709304

题 4:

设 f(x) 在[0,1] 上有二阶导数,f(0)=f(1)=f’(0)=f’(1)=0,证明存在 𝛏∈(0,1),使得f’’(𝛏)=f(𝛏).

查看更多

评论

20170929.3

题 3:

求极限 $\lim _{\tiny{x\rightarrow\infty}} {(b^{\tiny{\dfrac{1}{n}}}-1)}\sum_{j=0}^{n-1} {b^{\tiny{\dfrac{i}{n}}} \: sin\: b^{\tiny{\dfrac{2i+1}{2n}}}(b>1).}$

查看更多

评论

20170928.2

题 2:

设 y=f(x) 在(-1,1)内有二阶连续导数,且f’’(x)≠0. 证明

  • (1) 对于任意非零x∈(-1,1),存在唯一 θ(x)∈(0,1), 使得 f(x)=f(0)+xf’[ θ(x),x] 成立;
  • (2) $\lim _{x\rightarrow 0^{+}}\theta \left( x\right) =\dfrac {1} {2}$.

查看更多

评论

20170927.1

题 1:

设 $0 < a < b$ ,证明:$\ln \dfrac {b} {a}>2\dfrac {b-a} {b+a}$.

查看更多

评论

使用 UI Automator 来实现Android自动化测试

1. 配置

直接添加 com.android.support.test 相关依赖的话会报如下冲突:

1
Error:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (25.3.1) and test app (23.0.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.

所以需要把 support 包剔除:

1
2
3
4
5
6
7
androidTestCompile ('com.android.support.test:runner:0.5') {
exclude group: 'com.android.support'
}
androidTestCompile ('com.android.support.test:rules:0.5') {
exclude group: 'com.android.support'
}
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'

查看更多

评论