学习python 可以从machine learning in .action是什么文件开始吗

Machine Learning(一)- 开发环境配置(Python) | FreeStyleFreeStyle
JUST DO WHAT YOU SHOULD DO!
> Machine Learning(一)- 开发环境配置(Python)
今天开始学习机器学习,所选学习书籍为《Machine Learning in Action》,书中所用语言为 Python,所以在此现将开发环境的配置过程记录下来。
所需软件:
python-2.7.10.msi :因为3.x的对三方库的兼容性不好,所以这里最好使用2.7版本。我使用的是 x86版的,系统为win8.1 x64。
numpy-1.9.2-win32-superpack-python2.7.exe:NumPy是Python的一个矩阵类型,提供了大量矩阵处理的函数。非正式来说,它是一个使运算更容易、执行更迅速的库,因为它的内部运算时通过C语言而不是Python实现的。
scipy-0.16.0b2-win32-superpack-python2.7.exe:SciPy是一款方便、易于使用、专为科学和工程设计的Python工具包。它包括统计,优化,整合,线性代数模块,傅里叶变换,信号和图像处理,常微分方程求解器等等。
matplotlib-1.3.0.win32-py2.7.exe:在使用NumPy进行学习统计计算时是枯燥的,大量的数据令我们很头疼,所以我们需要把它图形化显示。 Matplotlib是一个Python的图形框架,类似于MATLAB和R语言。
pyparsing-2.0.3.win32-py2.7.exe:Pyparsing是纯Python编写的,易于使用。Pyparsing的类库提供了一系列类让你可以从表达式单独的元素中开始构建解析器。官方介绍:The pyparsing module is an alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions. The pyparsing module provides a library of classes that client code uses to construct the grammar directly in Python code.
python-dateutil-1.5.tar.gz:The dateutil module provides powerful extensions to the standard datetime module, available in Python 2.3+.
可能遇到的问题:
我在自己配置开发环境时,遇到了以下问题:
ImportError: matplotlib requires dateutil:安装 dateutil 模块,解压python-dateutil-1.5.tar.gz文件,在命令行窗口中切换到其根目录,执行 python setup.py install进行安装。
ImportError: No module named six:没有安装Scipy,如果安装了,则将 Python27\Lib\site-packages\scipy\_lib 中的 six.py、six.pyc、six.pyo三个文件拷贝到 Python27\Lib\site-packages目录下即可。
ImportError: six 1.3
you have 1.2.0:通过安装 matplotlib 1.3.0 版本解决,因为最新版本的matplotlib 1.4.3,要求six 1.3版本及以上,但是最新的scipy二进制安装包中只提供了1.2版本的。
ImportError: matplotlib requires pyparsing:安装 pyparsing 。
按照以下顺序安装,注意版本上要对应。
MatPlotLib
这里给出KNN算法的Python代码,以供测试。(文件名KNN.py)
#coding:gbk
Created on Sep 16, 2010
kNN: k Nearest Neighbors
inX: vector to compare to existing dataset (1xN)
dataSet: size m data set of known vectors (NxM)
labels: data set labels (1xM vector)
k: number of neighbors to use for comparison (should be an odd number)
the most popular class label
@author: pbharrin
from numpy import *
import operator
from os import listdir
def classify0(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0]
diffMat = tile(inX, (dataSetSize,1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
sortedDistIndicies = distances.argsort()
classCount={}
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
return sortedClassCount[0][0]
def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group, labels
def file2matrix(filename):
fr = open(filename)
numberOfLines = len(fr.readlines())
#get the number of lines in the file
returnMat = zeros((numberOfLines,3))
#prepare matrix to return
classLabelVector = []
#prepare labels return
fr = open(filename)
for line in fr.readlines():
line = line.strip()
listFromLine = line.split('\t')
returnMat[index,:] = listFromLine[0:3]
classLabelVector.append(int(listFromLine[0]))
#原本数值为 -1,但是报错:ValueError: invalid literal for int() with base 10: 'largeDoses'
index += 1
return returnMat,classLabelVector
def autoNorm(dataSet):
minVals = dataSet.min(0)
maxVals = dataSet.max(0)
ranges = maxVals - minVals
normDataSet = zeros(shape(dataSet))
m = dataSet.shape[0]
normDataSet = dataSet - tile(minVals, (m,1))
normDataSet = normDataSet/tile(ranges, (m,1))
#element wise divide
return normDataSet, ranges, minVals
def datingClassTest():
hoRatio = 0.50
#hold out 10%
datingDataMat,datingLabels = file2matrix('datingTestSet2.txt')
#load data setfrom file
normMat, ranges, minVals = autoNorm(datingDataMat)
m = normMat.shape[0]
numTestVecs = int(m*hoRatio)
errorCount = 0.0
for i in range(numTestVecs):
classifierResult = classify0(normMat[i,:],normMat[numTestVecs:m,:],datingLabels[numTestVecs:m],3)
print "the classifier came back with: %d, the real answer is: %d" % (classifierResult, datingLabels[i])
if (classifierResult != datingLabels[i]): errorCount += 1.0
print "the total error rate is: %f" % (errorCount/float(numTestVecs))
print errorCount
def img2vector(filename):
returnVect = zeros((1,1024))
fr = open(filename)
for i in range(32):
lineStr = fr.readline()
for j in range(32):
returnVect[0,32*i+j] = int(lineStr[j])
return returnVect
def handwritingClassTest():
hwLabels = []
trainingFileList = listdir('trainingDigits')
#load the training set
m = len(trainingFileList)
trainingMat = zeros((m,1024))
for i in range(m):
fileNameStr = trainingFileList[i]
fileStr = fileNameStr.split('.')[0]
#take off .txt
classNumStr = int(fileStr.split('_')[0])
hwLabels.append(classNumStr)
trainingMat[i,:] = img2vector('trainingDigits/%s' % fileNameStr)
testFileList = listdir('testDigits')
#iterate through the test set
errorCount = 0.0
mTest = len(testFileList)
for i in range(mTest):
fileNameStr = testFileList[i]
fileStr = fileNameStr.split('.')[0]
#take off .txt
classNumStr = int(fileStr.split('_')[0])
vectorUnderTest = img2vector('testDigits/%s' % fileNameStr)
classifierResult = classify0(vectorUnderTest, trainingMat, hwLabels, 3)
print "the classifier came back with: %d, the real answer is: %d" % (classifierResult, classNumStr)
if (classifierResult != classNumStr): errorCount += 1.0
print "\nthe total number of errors is: %d" % errorCount
print "\nthe total error rate is: %f" % (errorCount/float(mTest))
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
#coding:gbk'''Created on Sep 16, 2010kNN: k Nearest Neighbors&Input:&&&&&&inX: vector to compare to existing dataset (1xN)&&&&&&&&&&&&dataSet: size m data set of known vectors (NxM)&&&&&&&&&&&&labels: data set labels (1xM vector)&&&&&&&&&&&&k: number of neighbors to use for comparison (should be an odd number)&&&&&&&&&&&&Output:&&&& the most popular class label&@author: pbharrin'''from numpy import *import operatorfrom os import listdir&def classify0(inX, dataSet, labels, k):&&&&dataSetSize = dataSet.shape[0]&&&&diffMat = tile(inX, (dataSetSize,1)) - dataSet&&&&sqDiffMat = diffMat**2&&&&sqDistances = sqDiffMat.sum(axis=1)&&&&distances = sqDistances**0.5&&&&sortedDistIndicies = distances.argsort()&&&& &&&&classCount={}&&&&&&&&&&&&&&for i in range(k):&&&&&&&&voteIlabel = labels[sortedDistIndicies[i]]&&&&&&&&classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1&&&&sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)&&&&return sortedClassCount[0][0]&def createDataSet():&&&&group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])&&&&labels = ['A','A','B','B']&&&&return group, labels&def file2matrix(filename):&&&&fr = open(filename)&&&&numberOfLines = len(fr.readlines())&&&&&&&& #get the number of lines in the file&&&&returnMat = zeros((numberOfLines,3))&&&&&&&&#prepare matrix to return&&&&classLabelVector = []&&&&&&&&&&&&&&&&&&&&&& #prepare labels return&& &&&&fr = open(filename)&&&&index = 0&&&&for line in fr.readlines():&&&&&&&&line = line.strip()&&&&&&&&listFromLine = line.split('\t')&&&&&&&&returnMat[index,:] = listFromLine[0:3]&&&&&&&&classLabelVector.append(int(listFromLine[0]))&&&&#原本数值为 -1,但是报错:ValueError: invalid literal for int() with base 10: 'largeDoses'&&&&&&&&index += 1&&&&return returnMat,classLabelVector&&&&def autoNorm(dataSet):&&&&minVals = dataSet.min(0)&&&&maxVals = dataSet.max(0)&&&&ranges = maxVals - minVals&&&&normDataSet = zeros(shape(dataSet))&&&&m = dataSet.shape[0]&&&&normDataSet = dataSet - tile(minVals, (m,1))&&&&normDataSet = normDataSet/tile(ranges, (m,1))&& #element wise divide&&&&return normDataSet, ranges, minVals&& def datingClassTest():&&&&hoRatio = 0.50&&&&&&#hold out 10%&&&&datingDataMat,datingLabels = file2matrix('datingTestSet2.txt')&&&&&& #load data setfrom file&&&&normMat, ranges, minVals = autoNorm(datingDataMat)&&&&m = normMat.shape[0]&&&&numTestVecs = int(m*hoRatio)&&&&errorCount = 0.0&&&&for i in range(numTestVecs):&&&&&&&&classifierResult = classify0(normMat[i,:],normMat[numTestVecs:m,:],datingLabels[numTestVecs:m],3)&&&&&&&&print "the classifier came back with: %d, the real answer is: %d" % (classifierResult, datingLabels[i])&&&&&&&&if (classifierResult != datingLabels[i]): errorCount += 1.0&&&&print "the total error rate is: %f" % (errorCount/float(numTestVecs))&&&&print errorCount&&&&def img2vector(filename):&&&&returnVect = zeros((1,1024))&&&&fr = open(filename)&&&&for i in range(32):&&&&&&&&lineStr = fr.readline()&&&&&&&&for j in range(32):&&&&&&&&&&&&returnVect[0,32*i+j] = int(lineStr[j])&&&&return returnVect&def handwritingClassTest():&&&&hwLabels = []&&&&trainingFileList = listdir('trainingDigits')&&&&&&&&&& #load the training set&&&&m = len(trainingFileList)&&&&trainingMat = zeros((m,1024))&&&&for i in range(m):&&&&&&&&fileNameStr = trainingFileList[i]&&&&&&&&fileStr = fileNameStr.split('.')[0]&&&& #take off .txt&&&&&&&&classNumStr = int(fileStr.split('_')[0])&&&&&&&&hwLabels.append(classNumStr)&&&&&&&&trainingMat[i,:] = img2vector('trainingDigits/%s' % fileNameStr)&&&&testFileList = listdir('testDigits')&&&&&&&&#iterate through the test set&&&&errorCount = 0.0&&&&mTest = len(testFileList)&&&&for i in range(mTest):&&&&&&&&fileNameStr = testFileList[i]&&&&&&&&fileStr = fileNameStr.split('.')[0]&&&& #take off .txt&&&&&&&&classNumStr = int(fileStr.split('_')[0])&&&&&&&&vectorUnderTest = img2vector('testDigits/%s' % fileNameStr)&&&&&&&&classifierResult = classify0(vectorUnderTest, trainingMat, hwLabels, 3)&&&&&&&&print "the classifier came back with: %d, the real answer is: %d" % (classifierResult, classNumStr)&&&&&&&&if (classifierResult != classNumStr): errorCount += 1.0&&&&print "\nthe total number of errors is: %d" % errorCount&&&&print "\nthe total error rate is: %f" % (errorCount/float(mTest))
里面用到的 datingTestSet.txt 文件见最后下载链接。
使用命令行进入到 KNN.py 文件所在的目录。依次执行图中所给命令:
就可以看到执行结果:
至此,说明你的机器学习 Python 使用环境已经配好了。
本文所用软件工具下载地址:
访问密码 c83f
测试用例所需txt文件下载地址:
访问密码 f14bmachine learning in action(2)
Python的使用我就不详细介绍了,因为我自己也不是特别熟悉(O(∩_∩)O哈哈~),不过Python和matlab差不多,语法很简单,用多了看多了自然就熟悉了,我之所以记录“machine learning in action”主要的目的也不是熟悉python,主要是记录我的学习过程,想提高自己的算法逻辑能力,而主要的切入点是常见的machine learning算法。所以接下来的教程中,编程语法我不太会多说,主要侧重于算法应用。
以下介绍的任何内容,大家有任何疑问,或者是对我有任何建议,可以随时在评论中提出来,我会尽量经常去查看,并给大家回复。
第一个要讲的算法是k-Nearest Neighbors(K-NN),即K-近邻算法,也是机器学习算法中最常见且简单的一个分类算法,主要采用测量不同特征值之间的距离来进行分类。
K-NN工作原理是:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都有标签(label),即我们知道样本集中每个数据所属分类的对应关系。输入一个没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相近数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前K个最相近的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相近数据中出现次数最多的分类,作为新数据的分类结果。
这个算法原理很简单,所以我就不多说了,直接讲解代码实现。
功能:使用k-近邻算法将每组数据划分到某个类别中,伪代码如下:
对未知类别属性的数据集中的每个点依次执行以下操作:
(1)计算已知类别数据集中的点与当前点之间的距离;
(2)按照距离递增次序排序;
(3)选取与当前点距离最小的k个点;
(4)确定前k个点所在类别的出现频率;
(5)返回前k个点出现频率最高的类别作为当前点的预测分类。
Python实现classify0(),如下:
def classify0(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0]
diffMat = tile(inX, (dataSetSize,1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
sortedDistIndicies = distances.argsort()
classCount = {}
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
sortedClassCount = sorted(classCount.iteritems(),
key = operator.itemgetter(1),
reverse = True)
return sortedClassCount[0][0]
classify0()函数有4个输入参数:用于分类的输入向量inX,输入的训练样本集dataSet,标签向量labels,最后参数k表示用于选择最近邻的数目,其中标签向量的元素个数和矩阵dataSet的行数相同。程序清单2-1中使用欧氏距离公式(当然你可以换成其他的距离计算公式),计算两个向量点xA和xB之间的距离:
d=(xA0-xB0)2+(xA1-xB1)2------------------------√
如果特征是多维的,那么依次加在后面即可。
这样,我们就构建了一个简单的k-NN分类器了,使用这个分类器可以完成很多分类任务。
举个简单的例子:首先创建一个已知标签的训练集,这个数据集中只有4个数据{(1.0,1.1), (1.0,1.0), (0,0), (0,0.1)},前两个属于A类,后两个属于B类,python代码如下:
def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group, labels
实验测试,创建名为kNN.py的python模块,将程序清单2-1和2-2输入到这个文件中。
进入python开发环境,开始——运行——cmd——进入kNN文件夹——python,
首先导入kNN模块,然后查看导入的数据集
&&& import kNN
&&& group,labels = kNN.createDataSet()
结果如下:
然后使用classify0()进行数据分类预测
&&& kNN.classify0([0,0], group, labels, 3)
输出结果为:
即预测结果为[0,0]属于“B”类,大家可以自己试试其他的数据分类结果。
到此,kNN简单的分类器构建完成了,接下来会用构建的kNN处理实际问题。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4190次
排名:千里之外
原创:18篇我的Machine Learning学习之路 - SNYang - 博客园
从2016年年初,开始用python写一个简单的爬虫,帮我收集一些数据。
6月份,开始学习Machine Learning的相关知识。
9月开始学习Spark和Scala。
现在想,整理一下思路。
先感谢下我的好友王峰给我的一些建议。他在Spark和Scala上有一些经验,让我前进的速度加快了一些。
作为一个程序猿,以前多次尝试看过一些机器学习方面的书,其过程可以说是步履阑珊,碰到的阻力很大。
主要原因是,读这些机器学习的书,需要有一些数学方面的背景。
问题就在这些数学背景上,这些背景不仅仅是数学技巧,也有一些共识。对于缺乏这些背景的我,即使一个简单的公式,也有时会感到困惑。
如果你像我一样是一个程序猿,我建议读Peter Harrington写的Machine Learning in Action (中文书名是《机器学习实战》)。
这本书是以开发者的知识背景来写的,并且提供的python代码可以下载,方便开发人员理解。
我写了一些博文,主要作用是帮助我理解学习的算法。大部分写的不好,后来我自己都看不懂。以后慢慢修正一下。
学习算法的Level
Level 1: 了解如何使用算法
Level 2: 了解算法的正确使用场景
正确的使用一个算法,需要经验和对算法理论的了解。
我以前有些这方面的经验,很多错误在于不正确地使用了算法。
当我们编程序给别人用时:
需要理解算法
最低要求,也要有一些基本的统计知识。
需要实现算法
实现算法一般比较简单,需要注意性能和精度。
基本上这部分在实现好后,比较稳定。
需要实现将用户数据应用到算法上的过程。
这是程序员主要干的工作,接口、性能上的考虑很多。
需要理解用户的使用场景。
这部分价值很大。
一方面,写单元测试是不可避免的,理解用户的场景才能写出有效的单元测试程序。
另外,会有很多处理客户问题的工作,也是长经验的机会。
Level 3: 了解算法的后面的数学理论
有人觉得这个用处不大。我觉得了解数学理论,可以:
成为真正的行家
未来的路还很远,怎么能戛然而止!
使用算法来帮助自己的一些事情,或者实现一个新的算法。
现在人工智能的潜力很大,可以自己好好玩玩。
学习python
在数据量不大的情况下(几个G),单机上就可以很好跑机器学习的程序。
这时,Python的用途就很大,不仅有已经实现好的算法,也可以实现爬虫,从网上获取数据。
学习Scala和函数式编程
对于大数据处理来说,Spark和Scala结合是现在的大趋势。
我写的博文有:
学习Spark架构
我写的博文有:
学习在Spark上的机器学习项目开发经验
学习更多的算法
蒙特卡洛树算法
成为Spark的Contributer
成为Spark的Contributer是件很cool的事。
可以读读Spark的代码,从中应该可以增长不少。
然后,尝试修一些Spark的Bugs。
路还很长。&&&&Machine Learning in Python(2015).pdf
Machine Learning in Python(2015).pdf
Chapter 1 The Two Essential Algorithms for Making Predictions
Chapter 2 Understand the Problem by Understanding the Data
Chapter 3 Predictive Model Building: Balancing Performance,
Complexity, and Big Data
Chapter 4 Penalized Linear Regression
Chapter 5 Building Predictive Models Using Penalized Linear
Chapter 6 Ensemble Methods
Chapter 7 Building Ensemble Models with Python
嵌到我的页面
<input type="text" readonly="true" value="">
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
开发技术下载排行(KnightLiao)
(KnightLiao)
(KnightLiao)
(飞翔的言)
第三方登录:

我要回帖

更多关于 万豪vactionclub骗局 的文章

 

随机推荐