[python] 安装numpy+scipy+matlotlib+scikit-learn及问题解决

这篇文章主要讲述Python如何安装Numpy、Scipy、Matlotlib、Scikit-learn等库的过程及遇到的问题解决方法。最近安装这个真是一把泪啊,各种不兼容问题和报错,希望文章对你有所帮助吧!你可能遇到的问题包括:
        ImportError: No module named sklearn 未安装sklearn包
        ImportError: DLL load failed: 找不到指定的模块
        ImportError: DLL load failed: The specified module could not be found

        Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat
        Numpy Install RuntimeError: Broken toolchain: cannot link a simple C program
        ImportError: numpy.core.multiarray failed to import
        ImportError: cannot import name __check_build
        ImportError: No module named matplotlib.pyplot

 

一. 安装过程


最早我是使用"pip install scikit-learn"命令安装的Scikit-Learn程序,并没有注意需要安装Numpy、Scipy、Matlotlib,然后在报错"No module named Numpy"后,我接着使用PIP或者下载exe程序安装相应的包,同时也不理解安装顺序和版本的重要性。其中最终都会报错" ImportError: DLL load failed: 找不到指定的模块",此时我的解决方法是:

错误:sklearn ImportError: DLL load failed: 找不到指定的模块
重点:安装python第三方库时总会出现各种兼容问题,应该是版本问题,版本需要一致。
下载:
http://download.csdn.net/detail/eastmount/9366117

第一步:卸载原始版本,包括Numpy、Scipy、Matlotlib、Scikit-Learn
        pip uninstall scikit-learn
        pip uninstall numpy
        pip uninstall scipy
        pip uninstall matplotlib


第二步:不使用"pip install package"或"easy_install package"安装,或者去百度\CSDN下载exe文件,而是去到官网下载相应版本。
        http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
        http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
        http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib
        http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-learn

安装过程中最重要的地方就是版本需要兼容。其中操作系统为64位,Python为2.7.8 64位,下载的四个whl文件如下,其中cp27表示CPython 2.7版本,cp34表示CPython 3.4,win_arm64指的是64位版本。
        numpy-1.10.2-cp27-none-win_amd64.whl
        scipy-0.16.1-cp27-none-win_amd64.whl
        matplotlib-1.5.0-cp27-none-win_amd64.whl
        scikit_learn-0.17-cp27-none-win_amd64.whl

PS
:不推荐使用"pip install numpy"安装或下载如"numpy-MKL-1.8.0.win-amd64-py2.7.exe"类似文件,地址如:
        
Numerical Python - Browse /NumPy at SourceForge.net
        SciPy: Scientific Library for Python - Browse Files at SourceForge.net 

第三步:去到Python安装Scripts目录下,再使用pip install xxx.whl安装,先装Numpy\Scipy\Matlotlib包,再安装Scikit-Learn。

其中我的python安装路径"G:\software\Program software\Python\python insert\Scripts",同时四个whl文件安装核心代码:
        pip install G:\numpy+scipy+matplotlib\numpy-1.10.2-cp27-none-win_amd64.whl
        pip install G:\numpy+scipy+matplotlib\scikit_learn-0.17-cp27-none-win_amd64.whl


 

http://images2015.cnblogs.com/blog/508095/201512/508095-20151217073241021-1022919086.jpg


 

C:\>G:

G:\>cd G:\software\Program software\Python\python insert\Scripts

G:\software\Program software\Python\python insert\Scripts>pip install G:\numpy+s

cipy+matplotlib\numpy-1.10.2-cp27-none-win_amd64.whl

Processing g:\numpy+scipy+matplotlib\numpy-1.10.2-cp27-none-win_amd64.whl

Installing collected packages: numpy

Successfully installed numpy-1.10.2

G:\software\Program software\Python\python insert\Scripts>pip install G:\numpy+s

cipy+matplotlib\matplotlib-1.5.0-cp27-none-win_amd64.whl

Installing collected packages: matplotlib

Successfully installed matplotlib-1.5.0

G:\software\Program software\Python\python insert\Scripts>pip install G:\numpy+s

cipy+matplotlib\scipy-0.16.1-cp27-none-win_amd64.whl

Processing g:\numpy+scipy+matplotlib\scipy-0.16.1-cp27-none-win_amd64.whl

Installing collected packages: scipy

Successfully installed scipy-0.16.1

G:\software\Program software\Python\python insert\Scripts>pip install G:\numpy+s

cipy+matplotlib\scikit_learn-0.17-cp27-none-win_amd64.whl

Processing g:\numpy+scipy+matplotlib\scikit_learn-0.17-cp27-none-win_amd64.whl

Installing collected packages: scikit-learn

Successfully installed scikit-learn-0.17

 

第四步:此时配置完成,关键是Python64位版本兼容问题和Scripts目录。最后用北邮论坛一个神人的回复结束这个安装过程:“傻孩子,用套件啊,给你介绍一个Anaconda或winpython。只能帮你到这里了! ”

二. 测试运行环境


搞了这么半天,为什么要装这些呢?给几个用例验证它的正确安装和强大吧!

Scikit-Learn是基于python的机器学习模块,基于BSD开源许可。Scikit-learn的基本功能主要被分为六个部分,分类,回归,聚类,数据降维,模型选择,数据预处理,具体可以参考官方网站上的文档。

NumPy(Numeric Python)系统是Python的一种开源的数值计算扩展,一个用python实现的科学计算包。它提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。
内容包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。


SciPy (pronounced "Sigh Pie") 是一个开源的数学、科学和工程计算包。它是一款方便、易于使用、专为科学和工程设计的Python工具包,包括统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理、常微分方程求解器等等。

Matplotlib是一个Python的图形框架,类似于MATLAB和R语言。它是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。


第一个代码:斜线坐标,测试matplotlib

 

import matplotlib

import numpy

import scipy

import matplotlib.pyplot as plt

plt.plot([1,2,3])

plt.ylabel('some numbers')

plt.show()

 运行结果:

http://images2015.cnblogs.com/blog/508095/201512/508095-20151217073958865-283190979.jpg

第二个代码:桃心程序,测试numpy和matplotlib
代码参考:Windows 下 Python easy_install 的安装 - KingsLanding

import numpy as np

import matplotlib.pyplot as plt

X = np.arange(-5.0, 5.0, 0.1)

Y = np.arange(-5.0, 5.0, 0.1)

x, y = np.meshgrid(X, Y)

f = 17 * x ** 2 - 16 * np.abs(x) * y + 17 * y ** 2 - 225

fig = plt.figure()

cs = plt.contour(x, y, f, 0, colors = 'r')

plt.show()

运行结果:

http://images2015.cnblogs.com/blog/508095/201512/508095-20151217074314881-1089586466.jpg



第三个程序:显示Matplotlib强大绘图交互功能
代码参考:Python-Matplotlib安装及简单使用 - bery

import numpy as np

import matplotlib.pyplot as plt

N = 5

menMeans = (20, 35, 30, 35, 27)

menStd =   (2, 3, 4, 1, 2)

ind = np.arange(N)  # the x locations for the groups

width = 0.35        # the width of the bars

fig, ax = plt.subplots()

rects1 = ax.bar(ind, menMeans, width, color='r', yerr=menStd)

womenMeans = (25, 32, 34, 20, 25)

womenStd =   (3, 5, 2, 3, 3)

rects2 = ax.bar(ind+width, womenMeans, width, color='y', yerr=womenStd)

# add some

ax.set_ylabel('Scores')

ax.set_title('Scores by group and gender')

ax.set_xticks(ind+width)

ax.set_xticklabels( ('G1', 'G2', 'G3', 'G4', 'G5') )

ax.legend( (rects1[0], rects2[0]), ('Men', 'Women') )

def autolabel(rects):

    # attach some text labels

    for rect in rects:

        height = rect.get_height()

        ax.text(rect.get_x()+rect.get_width()/2., 1.05*height, '%d'%int(height),

                ha='center', va='bottom')

autolabel(rects1)

autolabel(rects2)

plt.show()

运行结果:

http://images2015.cnblogs.com/blog/508095/201512/508095-20151217080923006-1370442178.jpg



PS:如果设置legend没有显示比例图标,则参考下面代码:

[python] view plain copy

  1. # coding=utf-8    
  2.   
  3. import numpy as np  
  4. import matplotlib  
  5. import scipy  
  6. import matplotlib.pyplot as plt  
  7.   
  8. #设置legend: http://bbs.byr.cn/#!article/Python/7705  
  9. #mark样式: http://www.360doc.com/content/14/1026/02/9482_419859060.shtml  
  10.   
  11. #国家 融合特征值  
  12. x1 = [10, 20, 50, 100, 150, 200, 300]  
  13. y1 = [0.615, 0.635, 0.67, 0.745, 0.87, 0.975, 0.49]  
  14.   
  15. #动物  
  16. x2 = [10, 20, 50, 70, 90, 100, 120, 150]  
  17. y2 = [0.77, 0.62, 0.77, 0.86, 0.87, 0.97, 0.77, 0.47]  
  18.   
  19. #人物  
  20. x3 = [10, 20, 50, 70, 90, 100, 120, 150]  
  21. y3 = [0.86, 0.86, 0.92, 0.94, 0.97, 0.97, 0.76, 0.46]  
  22.   
  23. #国家  
  24. x4 = [10, 20, 50, 70, 90, 100, 120, 150]  
  25. y4 = [0.86, 0.85, 0.87, 0.88, 0.95, 1.0, 0.8, 0.49]  
  26.   
  27. plt.title('Entity alignment result')  
  28. plt.xlabel('The number of class clusters')  
  29. plt.ylabel('Similar entity proportion')  
  30.   
  31. plot1, = plt.plot(x1, y1, '-p', linewidth=2)  
  32. plot2, = plt.plot(x2, y2, '-*', linewidth=2)  
  33. plot3, = plt.plot(x3, y3, '-h', linewidth=2)  
  34. plot4, = plt.plot(x4, y4, '-d', linewidth=2)  
  35.   
  36. plt.xlim(0, 300)  
  37. plt.ylim(0.4, 1.0)  
  38.   
  39.   
  40. #plot返回的不是matplotlib对象本身,而是一个列表,加个逗号之后就把matplotlib对象从列表里面提取出来  
  41. plt.legend( (plot1,plot2,plot3,plot4), ('Spot''Animal''People''Country'), fontsize=10)  
  42. plt.show()  

输出如下图所示:

 



第四个代码:矩阵数据集,测试sklearn
 

from sklearn import datasets

iris = datasets.load_iris()

digits = datasets.load_digits()

print digits.data

运行结果:

http://images2015.cnblogs.com/blog/508095/201512/508095-20151217074648381-693345444.jpg


第五个代码:计算TF-IDF词语权重,测试scikit-learn数据分析
参考代码:python scikit-learn计算tf-idf词语权重_python 分词权重_liuxuejiang158的博客-CSDN博客

# coding:utf-8

__author__ = "liuxuejiang"

import jieba

import jieba.posseg as pseg

import os

import sys

from sklearn import feature_extraction

from sklearn.feature_extraction.text import TfidfTransformer

from sklearn.feature_extraction.text import CountVectorizer

if __name__ == "__main__":

    corpus=[" 来到 北京 清华大学",     #第一类文本切词后的结果 词之间以空格隔开

        " 来到 网易 杭研 大厦",     #第二类文本的切词结果

        "小明 硕士 毕业 中国 科学院"#第三类文本的切词结果

        " 北京 天安门"]            #第四类文本的切词结果

    #该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频

    vectorizer=CountVectorizer()

    #该类会统计每个词语的tf-idf权值

    transformer=TfidfTransformer()

    #第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵

    tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus))

    #获取词袋模型中的所有词语

    word=vectorizer.get_feature_names()

    #tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重

    weight=tfidf.toarray()

    #打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重

    for i in range(len(weight)):

        print u"-------这里输出第",i,u"类文本的词语tf-idf权重------"

        for j in range(len(word)):

            print word[j],weight[i][j]

运行结果:

http://images2015.cnblogs.com/blog/508095/201512/508095-20151217075350412-181996779.jpg

. 其他错误解决方法


这里虽然讲解几个安装时遇到的其他错误及解决方法,但作者更推荐上面的安装步骤。

在这之前,我反复的安装、卸载、升级包,其中遇到了各种错误,改了又改,百度了又谷歌。常见PIP用法如下:
 

* pip install numpy             --安装包numpy

* pip uninstall numpy           --卸载包numpy

* pip show --files PackageName  --查看已安装包

* pip list outdated             --查看待更新包信息

* pip install --upgrade numpy   --升级包

* pip install -U PackageName    --升级包

* pip search PackageName        --搜索包

* pip help                      --显示帮助信息

 
ImportError: numpy.core.multiarray failed to import
python
安装numpy时出现的错误,这个通过stackoverflow和百度也是需要python版本与numpy版本一致,解决的方法包括"pip install -U numpy"升级或下载指定版本"pip install numpy==1.8"。但这显然还涉及到更多的包,没有前面的卸载下载安装统一版本的whl靠谱。

Microsoft Visual C++ 9.0 is required(unable to find vcvarsall.bat)
因为Numpy内部矩阵运算是用C语言实现的,所以需要安装编译工具,这和电脑安装的VC++或VS2012有关,解决方法:如果已安装Visual Studio则添加环境变量VS90COMNTOOLS即可,不同的VS版本对应不同的环境变量值:
        Visual Studio 2010 (VS10)设置 VS90COMNTOOLS=%VS100COMNTOOLS%
        Visual Studio 2012 (VS11)设置 VS90COMNTOOLS=%VS110COMNTOOLS%
        Visual Studio 2013 (VS12)设置 VS90COMNTOOLS=%VS120COMNTOOLS%
但是这并没有解决,另一种方法是下载Micorsoft Visual C++ Compiler for Python 2.7的包。
下载地址:
http://www.microsoft.com/en-us/download/details.aspx?id=44266 
参考文章:安装pandas出现错误“error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat).”的解决办法 - OSCHINA - 中文开源技术交流社区

 

PS:这些问题基本解决方法使用pip升级、版本一致、重新下载相关版本exe文件再安装。

总之,最后希望文章对你有所帮助!尤其是刚学习Python和机器学习的同学。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/38988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高并发数据抓取实战:使用HTTP爬虫ip提升抓取速度

又到每天一期学习爬虫的时间了,作为一名专业的爬虫程序员,今天要跟你们分享一个超实用的技巧,就是利用HTTP爬虫ip来提升高并发数据抓取的速度。听起来有点高大上?别担心,我会用通俗易懂的话来和你们说,让你…

自定义组件引入使用单标签还是双标签好

在许多前端框架和库中,自定义组件可以使用单标签或双标签进行引入和使用。让我为您解释一下这两种方式的区别和使用场景。 单标签(Self-closing Tag):使用单标签来引入自定义组件意味着您在组件的使用中只需要一个标签&#xff0…

自动切换HTTP爬虫ip助力Python数据采集

在Python的爬虫世界里,你是否也被网站的IP封锁问题困扰过?别担心,我来教你一个终极方案,让你的爬虫自动切换爬虫ip,轻松应对各种封锁和限制!快来跟我学,让你的Python爬虫如虎添翼! 首…

如何使用mysql命令行导出csv文件?

首先打开ssh,使用命令行登录mysql mysql -uroot -p123456 其中-u后面的root是用户名,-p后面的123456是密码 ,替换成自己的账户和密码即可 然后切换到自己需要操作的数据库,例如test数据库 use test 接下来执行语句来选择要导…

服务器托管中1U是什么意思?

U的概念 U是一种表示服务器外部尺寸的单位,是unit的缩略语。 1U4.44514.445cm 2U4.44528.89cm 4U4.445*413.335cm 在托管服务器时,服务商经常说的“1U”是外形满足EIA(美国电子工业协会)规格、厚度为4.445cm的产品,设…

uniapp-微信小程序篇

uniapp-微信小程序篇 一、创建项目(以Vue3TS 项目为示例) 可以通过命令行的方式创建也可以通过HBuilderX进行创建(通过HBuilderX创建的项目建议选择最简单的模板),个人建议使用命令行方式。 (1) 命令行方式: npx degit dcloudio…

ABAP 期初库存批量导入 demo1

&--------------------------------------------------------------------- *& Report ZMMCP005 &--------------------------------------------------------------------- 作者: Liv完成日期:描述: 期初库存导入需求简要说明&…

uni-app 面容、指纹识别插件(uni-face-login)

面容、指纹识别插件(uni-face-login) 介绍 人脸指纹登录授权,可以使用手机自带的人脸、指纹进行生物识别,进而判断是否机主本人,从而进行授权验证,适配安卓、iOS、鸿蒙设备 猛戳这里去插件市场看看 使用 该插件支持鸿蒙、安卓…

UE4/5C++多线程插件制作(二十一、使用)

目录 DemoPawn.h DemoPawn.cpp 会出现的bug 插件 相关的插件制作在上一节已经完成了。 具体的使用方式在第0章已经写了,get之后去绑定即可。 而后笔者做了一个接口,具体的绑定方式也就在这个接口里面。 接下来最重要的是进行使用,对此我做了一个与蓝图相关的接口,里…

TypeScript教程(一)简介与安装

一、简介 TypeScript 是 JavaScript 的一个超集,扩展了JavaScript的语法,因此现有的JavaScript可与TypeScript一起工作无需修改,支持 ECMAScript 6 标准(ES6 教程)。 语言特性: 1.类型批注和编译时类型检…

怎么学习AJAX相关技术? - 易智编译EaseEditing

学习AJAX(Asynchronous JavaScript and XML)相关技术可以让你实现网页的异步数据交互,提升用户体验。以下是一些学习AJAX技术的步骤和资源: HTML、CSS和JavaScript基础: 首先,确保你已经掌握了基本的HTML…

【Redis】Redis三种集群模式-主从、哨兵、集群各自架构的优点和缺点对比

文章目录 前言1. 单机模式2. 主从架构3. 哨兵4. 集群模式总结 前言 如果Redis的读写请求量很大,那么单个实例很有可能承担不了这么大的请求量,如何提高Redis的性能呢?你也许已经想到了,可以部署多个副本节点,业务采用…

Android系统-进程-Binder1-概述

目录 引言: 一次拷贝 Binder一次通信过程 应用启动中的binder交互 C/S模式: Binder COMMAND BWR数据结构: 引言: Android的binder是从openbinder发展过来的。包括了binder驱动,Native层,Java层。用…

光耦继电器:实现电气隔离的卓越选择

光耦继电器是一种常用的电子元件,用于实现电气隔离和信号传输。在工业控制、自动化系统和电力电子等领域,光耦继电器具有独特的特点和优势。本文将从可靠性、隔离性、响应速度和适应性等方面对光耦继电器的特点进行概述。 光耦继电器是一种典型的固态继电…

Mysql内储存JSON字符串,根据条件进行查询(包含多层级复杂JSON查询)

1.模糊查询json类型字段 存储的数据格式(字段名 people_json): {“name”: “zhangsan”, “age”: “13”, “gender”: “男”} 代码如下(示例): select * from table_name where people_json->$.n…

部署工业物联网可以选择哪些通信方案?

部署工业物联网有诸多意义,诸如提升生产效率,降低管理成本,保障生产品质稳定,应对长期从业劳动力变化趋势等。针对不同行业、场景,工业物联网需要选择不同的通信方案,以达到成本和效益的最佳平衡。本篇就简…

安全头响应头(三)​X-Content-Type-Options

一 X-Content-Type-Options响应头 说明:先写个框架,后续补充 思考:请求类型是 "style" 和 "script" 是什么意思? script标签 style StyleSheet JavaScript MIME type 文件扩展和Content-Type的映射关系 场景: 一个…

Mybatis 源码 ∞ :杂七杂八

文章目录 一、前言二、TypeHandler三、KeyGenerator四、Plugin1 Interceptor2 org.apache.ibatis.plugin.Plugin3. 调用场景 五、Mybatis 嵌套映射 BUG1. 示例2. 原因3. 解决方案 六、discriminator 标签七、其他1. RowBounds2. ResultHandler3. MapKey 一、前言 Mybatis 官网…

mysql主从复制搭建(一主一从)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言MySQL复制过程分为三部: 一、准备工作二、配置>主库Master三、配置>从库SlaveSlave_IO_Running: YesSlave_SQL_Running: Yes 四、测试至此&am…

8 | 美国航班数据分析

"在现代快节奏的生活中,航空旅行已经成为人们出行的重要方式之一。然而,航班的准时性一直以来都是旅客和航空公司关注的焦点。无论是商务出差还是休闲度假,乘客们都希望能够在既定的时间内安全、准时地到达目的地。而对于航空公司而言,准点运营不仅关乎乘客体验,还涉…