一、感知机模型

二、线性回归(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模型实现的更多相关文章

  1. 机器学习---最小二乘线性回归模型的5个基本假设(Machine Learning Least Squares Linear Regression Assumptions)

    在之前的文章<机器学习---线性回归(Machine Learning Linear Regression)>中说到,使用最小二乘回归模型需要满足一些假设条件.但是这些假设条件却往往是人们 ...

  2. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  3. 【机器学习Machine Learning】资料大全

    昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...

  4. 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 ...

  5. Machine Learning Algorithms Study Notes(2)--Supervised Learning

    Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...

  6. 机器学习(Machine Learning)&深度学习(Deep Learning)资料

    <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...

  7. FAQ: Machine Learning: What and How

    What: 就是将统计学算法作为理论,计算机作为工具,解决问题.statistic Algorithm. How: 如何成为菜鸟一枚? http://www.quora.com/How-can-a-b ...

  8. 机器学习(Machine Learning)&深入学习(Deep Learning)资料

    <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost 到随机森林. ...

  9. 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 ...

随机推荐

  1. TIOJ1208 第K大连续和

    第k大的题一般都有点麻烦 pbds库的tree,需要研究一下https://codeforces.com/blog/entry/11080find_by_order() and order_of_ke ...

  2. Spring自动注入的几种方式

    ---恢复内容开始---   @Service("accountEmailService")public class AccountEmailServiceImpl impleme ...

  3. 基于纯注解的spring开发的介绍

    几个核心注解的介绍1.@Configuration它的作用是:将一个java类修饰为==配置文件==,在这个java类进行组件注册1package com.kkb.config; import org ...

  4. POJ-1724 深搜剪枝

    这道题目如果数据很小的话.我们通过这个dfs就可以完成深搜: void dfs(int s) { if (s==N) { minLen=min(minLen,totalLen); return ; } ...

  5. 【集合遍历-Java】

    遍历List集合的三种方法 1.增强for循环 for(String str : list) {//其内部实质上还是调用了迭代器遍历方式,这种循环方式还有其他限制,不建议使用. System.out. ...

  6. ps---图层,移动工具

    1.移动图层从一个文件到另一个文件相当于复制,如果俩文件大小相同,开始移动后,按下shift键,可保持原来位置.若不相同,拖拽后,按shift,则会自动居中.如果目标文档包含选区,会到选区的中央. 2 ...

  7. vue项目中设置跨域

    config->index.js 'use strict' // Template version: 1.3.1 // see http://vuejs-templates.github.io/ ...

  8. c和c++如何把一个整数转化为string

    c和c++如何把一个整数转化为string C++: 一.string转int的方式 采用最原始的string, 然后按照十进制的特点进行算术运算得到int,但是这种方式太麻烦,这里不介绍了. 采用标 ...

  9. Spring拓展接口之BeanPostProcessor,我们来看看它的底层实现

    前言 开心一刻 小明:“妈,我被公司开除了”,妈:“啊,为什么呀?”, 小明:“我骂董事长是笨蛋,公司召开高层会议还要起诉我”,妈:“告你诽谤是吧?”,小明:“不是,他们说要告我泄露公司机密” Bea ...

  10. JavaScript中变量、作用域和内存问题(JavaScript高级程序设计第4章)

    一.变量 (1)ECMAScript变量肯能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,引用类型值指那些可能由多个值构成的对象. (2)基本数据类型是按值访问,可 ...