常见machine learning模型实现
一、感知机模型
二、线性回归(Linear Regression)
from numpy import * def loadData(filename):
x = []
y = []
f = open(filename)
for line in f.readlines():
lineData = line.strip().split(',')
x.append([1.0,float(lineData[0])])
y.append(float(lineData[1]))
return x,y #预测函数,theta,x都是一维数组,dot运算得到实数,对于二维数组,dot运算就是矩阵运算
def h(theta,x):
return theta.dot(x) #批量梯度下降
def batch_gradient_descent(alpha,theta,x,y):
m,n = x.shape
newtheta = array([0] * n,dtype = float)
for j in range(n):
count = 0.0
for i in range(m):
count += (h(theta,x[i,:]) - y[i])*x[i,j]
newtheta[j] = newtheta[j] - count * alpha / m
return newtheta #正则方程
def normal_equation(x,y):
return linalg.inv(transpose(x).dot(x)).dot(transpose(x)).dot(y) #损失函数
def cost_function(theta,x,y):
m = x.shape[0]
return (x.dot(theta) - y).dot(x.dot(theta) - y) / (2 * m) def run():
x,y = loadData('ex1data1.txt')
x = array(x)
y = array(y) #列向量
m,n = x.shape
theta = array([0] * n,dtype = float)
costs = []
for iters in range(1000):
costs.append(cost_function(theta,x,y))
theta = batch_gradient_descent(0.01,theta,x,y)
print "batch gradient descent:\n"
print "theta:",theta
print 'cost:\n',costs print "normal equation:\n"
theta = normal_equation(x,y)
print "theta:",theta if __name__ == "__main__":
run()
三、Logistic Regression
def sigmoid(x):
return 1.0/(1 + exp(-x)) def trainLogRegres(x,y,opts):
m,n = x.shape
alpha = opts["alpha"]
maxIter = opts['maxIter']
weight = ones((n,1)) for k in range(maxIter):
if opts['optimizeType'] == 'batchGraDescent':
weight = weight - alpha * x.T * (sigmoid(x*weight) - y)
elif opts['optimizeType'] == 'stocGraDescent':
for i in range(m):
weight = weight - alpha * x[i,:].T * (sigmoid(x[i,:] * weight) - y[i,0])
else:
raise NameError('Not support optimize method type!') return weight def testLogRegres(weight,x,y):
m,n = x.shape
trueNum = 0
for i in range(m):
predict = sigmoid(x[i,:] * weight)[0,0] > 0.5
if predict == bool(y[i,0]):
trueNum += 1
accuracy = float(trueNum) / m
return accuracy #x每行对应一个样本,y是列向量
def loadData():
x = []
y = []
f = open("testSet.txt")
for line in f.readlines():
lineArr = line.strip().split()
x.append([1.0, float(lineArr[0]), float(lineArr[1])])
y.append(float(lineArr[2]))
return mat(x),mat(y).T if __name__ == '__main__':
x,y = loadData()
opts = {'alpha': 0.01, 'maxIter': 50, 'optimizeType': 'stocGraDescent'}
weight = trainLogRegres(x,y,opts)
accuracy = testLogRegres(weight,x,y)
print "accuracy:",accuracy
四、SVM
五、kmeans
https://en.wikipedia.org/wiki/Latent_semantic_analysis
常见machine learning模型实现的更多相关文章
- 机器学习---最小二乘线性回归模型的5个基本假设(Machine Learning Least Squares Linear Regression Assumptions)
在之前的文章<机器学习---线性回归(Machine Learning Linear Regression)>中说到,使用最小二乘回归模型需要满足一些假设条件.但是这些假设条件却往往是人们 ...
- 【Machine Learning】KNN算法虹膜图片识别
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 【机器学习Machine Learning】资料大全
昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...
- Machine Learning Algorithms Study Notes(4)—无监督学习(unsupervised learning)
1 Unsupervised Learning 1.1 k-means clustering algorithm 1.1.1 算法思想 1.1.2 k-means的不足之处 1 ...
- Machine Learning Algorithms Study Notes(2)--Supervised Learning
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料
<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...
- FAQ: Machine Learning: What and How
What: 就是将统计学算法作为理论,计算机作为工具,解决问题.statistic Algorithm. How: 如何成为菜鸟一枚? http://www.quora.com/How-can-a-b ...
- 机器学习(Machine Learning)&深入学习(Deep Learning)资料
<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost 到随机森林. ...
- Machine Learning - 第6周(Advice for Applying Machine Learning、Machine Learning System Design)
In Week 6, you will be learning about systematically improving your learning algorithm. The videos f ...
随机推荐
- zipkin 服务追踪
服务追踪,就是对请求接口的追踪并保存. 在测试的过程中我们会发现,有时候,程序刚刚启动后,刷新几次,并不能看到任何数据,原因就是我们的spring-cloud-sleuth收集信息是有一定的比率的,默 ...
- 查看python关键字
打开命令窗口 输入python-——help()——keywords
- c++ extern
一.extern关键字的作用 文件中定义的全局变量的可见性扩展到整个程序是在链接完成之后,而在编译阶段,他们的可见性仍局限于各自的文件. 编译器的目光不够长远,编译器没有能够意识到,某个变量符号虽然不 ...
- Caused by: java.lang.IllegalArgumentException: Parameter Maps collection does not contain value for com.bj186.crm.mapper.UserMapper.Integer
在使用SSM整合myBatis的过程中遇到了这个问题. 问题的原因: 把parameterType错误的写成了parameterMap 解决办法: 将parameterMap修改为parameterT ...
- Must set property 'expression' before attempting to match
因为这个问题没有直接指向问题的地点, 所以找起来不是很容易. 但是如果找不到, 这个错就会一直都存在. 原因分析: 在使用切面编程的时候, 没有把切入点配置全面 解决方法: 在before, afte ...
- Selenium3+python自动化008-操作浏览器基本方法
一.打开网站1.第一步:从selenium里面导入webdriver模块2.打开Firefox浏览器(Ie和Chrome对应下面的)3.打开百度网址二.页面刷新1.有时候页面操作后,数据可能没及时同步 ...
- 《BUG创造队》作业8:软件测试与Alpha冲刺(第四天)
项目 内容 这个作业属于哪个课程 2016级软件工程 这个作业的要求在哪里 实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 BUG创造队 作业学习目标 (1)掌握软件测试基础技术.(2)学习 ...
- java对比IO和NIO的文件读写性能测试
1. NIO采用更接近操作系统执行IO的方式:通道和缓存器:顾名思义,数据源的数据由缓存器通过通道进行传输. 2. 在JDK5之后,原始IO系统底层用NIO进行了优化,这可以通过sun公布的源码中找到 ...
- Oracle数据库的基本使用
1.Linux安装 (略) 2.Oracle数据库监听命令: 监听状态:$lsnrctl status 启动监听:$lsnrctl start 关闭监听:$lsnrctl stop 重载监听:$l ...
- nginx的配置和基本使用命令
配置文件基本说明 配置文件位置:/usr/local/nginx/conf/nginx.conf #设置用户群,nobody代表低权限用户 #user nobody; #工作衍生进程数,通常代表CPU ...