这篇文章介绍了Python机器学习环境的搭建,我用的机器学习开源工具是scikit-learn。下面具体介绍环境搭建以及遇到的一些问题。所有可能需要的软件都可在官网下载,或者在我的百度网盘下载:http://pan.baidu.com/share/linkshareid=1273581610&uk=3510054274。这里介绍的在windows下搭建的,同时我也在ubuntu 13.04下搭建成功,之前也一直在ubuntu下办公,但是后来发现风扇一直开启,还经常卡死,看电子书和视频也不太方便。于是后来又回到了windows下,如果只在Linux下学习那么应该选择ubuntu 13.04。

scikit-learn是一个开源机器学习软件包。其用户手册在这里下载:http://pan.baidu.com/share/link?shareid=1332146121&uk=3510054274。scikit-learn是用python开发的。于是整个环境的第一步要安装python,这里用的是python 2.7,也建议使用这个版本,我已经包含在我的网盘里了,大家看名字可以明白是哪一个。安装过程比较简单,鼠标直接一路(可改变以下路径,默认是装在C盘的)点下来即可。之后我们需要分别安装的是Numpy,Scipy,Matplotlib,前两者是科学计算的,比如说矩阵处理,后者是用来画图的,作数据可视化的。关于它们的教程可在这里下载:http://pan.baidu.com/share/link?shareid=1374756503&uk=3510054274。它们的安装都比较简单,安装的时候会自动检测之前安装的python,所以基本也就是一路点击下来。最后安装scikit-learn 0.15,安装之前首先需要安装numpy-MKL.整个过程是比较简单的。

总共有743条,用word的写字板打开我网盘里的文件:web_traffic.tsv。这里数据的第一列表示时间(小时),第二列表示在这个小时内网站点击量(比如说第一行1  2272,表示第1个小时的点击量为2272次)。而我们所要做的工作便是通过这些数据去预测未来的点击量,从而未我们的网站建设提供一些指导,比如说我们需要多少服务器来支撑这样的点击量,如果我们能够提前知道就可以节省很多钱,总比事先买很多服务器好哈。

首先,我们要做的是把这些数据读到我们的程序里去。方法是使用SciPy的genfromtxt(),首先打开开始菜单中的所有应用程序找到Python 2.7,选择第一个IDLE(Python GUI):

然后输入:

import scipy as sp

data=sp.genfromtxt(“web_traffic.tsv”,delimiter=”\t”)

前者表示路径名,要注意在自己电脑上设置成相应的路径名,然后第二个参数是分隔符,由于原文件中使用的制表符隔开数据的,所以这里是\t。为了查看以下是否已经成功将数据读取到相应变量中,我们可以用如下的方法检验:

其中观察到第二行数据的第二列nan,它表示无效数据。然后,我们再敲入:

>>>print(data.shape),显式如下:

它的意思表示一共有743行数据,每行数据有2个属性。到这里,我们已经成功把数据读到程序里去了。接下来需要对数据进行一些预处理,比如说上面显示的无效数据。

我们需要把数据分成两个向量也许更好。它们分别是向量x和向量y。使得它们可以对应监督学习中的输入和输出。第一个向量x表示第一列时间,向量y表示第二列点击量。操作如下:

刚才提到了无效数据,首先看看有多少个无效数据,也就是有多少行含有“nan”。敲入:

看来不多,只有8行。我们能够手动删除它们?那如果很多无效数据了呢,所以我们还是借助SciPy的强大功能吧。敲入:

学过程序的人应该都能看得明白,~表示取反,这里就表示取有效的数据,当然具体细节我们暂时不需要明白,只要知道它的功能即可。好的,现在来检测一下是不是已经剔除了无效数据呢?

发现原来的2被我们剔除了,再来看下y吧:

原来那个nan没了。好的,数据处理好了,接下来想可视化以下,我们把它展示在一张图中,这就要借助工具Matplotlib.把下图中的>>>后面的命令敲入:

可以看到图:

这个就是之前的数据绘成的图,x,y轴分别表示时间和点击量。数据到这里基本就处理好了。下面应该是机器学习算法部分了。我们要选择一个算法去预测将来的点击量,这是明显的监督学习。上图给出的数据便是训练样本。在建立我们第一个模型之前我们需要先设计一个评估函数,用来判断什么样的模型才是好的。也就是误差函数,可以这样来计算,用模型的预测值-真实值(训练样本已经提供)的差的平方来评估(为什么它能评估,也是很好理解的)。即:

def error(f,x,y):

return sp.sum((f(x)-y)**2)

容易知道,这其实是一个拟合问题,把这些数据拟合到最佳模型(即一个函数,再用这个函数去预测新数据)。从最简单的情况开始,我们首先去一条直线去拟合这些数据。SciPy提供了函数polyfit(),只要给定数据x和y以及多项式的阶数(直线是1次函数),它就能找到模型的函数,使得之前定义的误差函数达到最小(只有误差最小才表面模型最好额)。敲入:fp1,residuals,rank,sv,rcond=sp.polyfit(x,y,1,full=True)

函数polyfit()返回拟合模型函数的参数fp1,并且通过把full设置成True,我们还能获得其他的相关信息,在这里只有residuals是我们感兴趣的,它是真的误差。打印参数:

打印误差:print(residuals)

这意味着:f(x)=2.59619213 * x +989.02487106

然后我们用函数poly1d()来创建模型函数:

注意这里是数字1不是字母l,不然就看到它报错了。现在我们用f1()去拟合数据,让我们看看拟合的效果:(由于画图需要之前的代码,所以写成一个脚本):

import sys

import scipy as sp

data=sp.genfromtxt("E:\python\data\ch01\data\web_traffic.tsv",delimiter="\t")

print(data[:10])

x=data[:,0]

y=data[:,1]

sp.sum(sp.isnan(y))

x=x[~sp.isnan(y)]

y=y[~sp.isnan(y)]

import matplotlib.pyplot as plt

plt.scatter(x,y)

plt.title("Web traffic over the last month")

plt.xlabel("Time")

plt.ylabel("Hits/hour")

plt.xticks([w*7*24 for w in range(10)],

['week %i'%w for w in range(10)])

plt.autoscale(tight=True)

plt.grid()

fp1,residuals,rank,sv,rcond=sp.polyfit(x,y,1,full=True)

f1=sp.poly1d(fp1)

fx=sp.linspace(0,x[-1],1000)

plt.plot(fx,f1(fx),linewidth=4)

plt.legend(["d=%i" %f1.order],loc="upper left")

plt.show()

input()

拟合效果显然不好,因为是一阶的直线。这个方法是可以用来学习机器学习各种算法的,而scikit-learn是提供了各种机器学习算法包,可供你直接调用。暂时就不介绍了,今天只写这么多。

python环境配置及参数_搭建python机器学习环境以及一个机器学习例子相关推荐

  1. mac php环境配置教程,Mac下搭建PHP 开发环境的教程(详细步骤)

    本篇文章给大家带来的内容是关于Mac下搭建PHP 开发环境的教程(详细步骤),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. php 的本地开发环境,搭建很简单,成功启动三个进程就可以 ...

  2. 学python哪个app比较好_初学python编程,有哪些不错的软件值得一用?

    初学python编程,有哪些不错的软件值得一用? 萧楚故人 发表于 2020-7-17 00:17:55 只看该作者 只看大图 倒序浏览 阅读模式 10 19832 下载好向圈APP可以快速联系圈友 ...

  3. 怎么用python在淘宝抢单_【Python】使用Selenium实现淘宝抢单

    最近,小明为了达成小姐姐的愿望,在某宝买到心仪的宝贝,再加上又迷上了python,就通过python轻而易举地实现了(个人声明:对Java来说,这并不是背叛). 需求分析&前期准备 需求其实很 ...

  4. python爬取收费素材_基于Python爬取素材网站音频文件

    基本环境配置SUW免费资源网 python 3.6 pycharm requests parsel 相关模块pip安装即可SUW免费资源网 SUW免费资源网 目标网页SUW免费资源网 SUW免费资源网 ...

  5. java alsa 编程_搭建JavaWeb开发环境

    更好的阅读体验欢迎访问博客搭建JavaWeb开发环境 前言 在服务器上搭建javaweb开发环境,特此记录 一.安装JDK 查看默认JDK java -version rpm -qa|grep jav ...

  6. Maven(一):安装与环境配置、使用Maven搭建web项目

    相关阅读: Maven(一):安装与环境配置.使用Maven搭建web项目 Maven(二):常用命令.依赖管理 Maven(三):将web项目的war包热部署到远程Tomcat服务器 Maven(四 ...

  7. QT环境配置:QT5.8.0与VS2013环境配置

    QT环境配置:QT5.8.0与VS2013环境配置 1.下载VS2013,QT5.8.0,qt-vs-tools-msvc2013-2.1.1. 1)VS2013版本为:Visual Studio U ...

  8. python手机安装教程视频_《python安装教程有没有?最好是视频的》 python搭建环境视频教程...

    学习python有什么好的视频教程 自python需要花点时间跟心思,而且要整套的教程去学习,这样你自己识思维上才不乱. 链接: https://pan.baidu.com/s/1TXjBVcnaC3 ...

  9. python环境搭建_搭建Python编程环境

    说明:本文面向信息技术新教材环境下的中学生或者编程小白.Python作为新教材落实计算思维的主要载体,有其独特的魅力.千里之行始于足下,搭建Python运行环境是跨出进入新世界大门的第一步. 搭建Py ...

最新文章

  1. 158. Leetcode 121. 买卖股票的最佳时机 (贪心算法-股票题目)
  2. CSS:你真的会用 z-index 吗?
  3. POJ - 3358 Period of an Infinite Binary Expansion(欧拉定理)
  4. MiniGUI+qvfb+Eclipse完成嵌入式系统图形开发(开发环境的搭建)
  5. zenmap扫描出来linux,如何在Linux上使用NMAP安全扫描器
  6. Adobe illustrator 调整对象大小 - 连载 11
  7. @程序员们,华为员工 300 万分红,老板给你多少年终奖?
  8. python 实现对象去重
  9. C++ 中map容器
  10. 【优化算法】改进型的LMS算法【含Matlab源码 630期】
  11. 用R进行meta分析(meta包)
  12. RayData大数据可视化教程(3)——用逻辑控制颜色动画切换并打包
  13. matlab仿真不确定时滞系统容错控制,基于自适应方法的非线性系统容错控制
  14. 数据结构中的校园导航系统---c语言
  15. python简易版成绩管理系统_Python学生成绩管理系统简洁版
  16. java多线程(超详细)
  17. 客户管理系统CRM推荐
  18. 一文读懂智能对话系统
  19. 分享如何在 PingCode 这类专业的看板软件中管理敏捷Kanban 项目
  20. 调试Kubernetes集群中的网络停顿问题

热门文章

  1. 带宽、峰值带宽,网速是什么,它们有什么关系?
  2. Kubeadm集群部署k8s
  3. 大学本科计算机考试小抄,大学考试允许带小抄 一页开卷学生抄到手酸
  4. 视频会议turbomeeting支持高度灵活桌面共享
  5. Python中WEB开发(一)
  6. linux命令查看开放哪些端口
  7. 23考研王道排序(第八章)自用笔记
  8. 智能运营助你轻松玩转消息推送
  9. jquery-svg-pan-zoom实现svg拖拽放大
  10. Python数据类型 (字符串)