[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来提升高并发数据抓取的速度。听起来有点高大上?别担心,我会用通俗易懂的话来和你们说,让你…

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

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

uniapp-微信小程序篇

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

怎么学习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层。用…

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

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

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

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

安全头响应头(三)​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…

轻量级自动化测试框架WebZ

一、什么是WebZ WebZ是我用Python写的“关键字驱动”的自动化测试框架,基于WebDriver。 设计该框架的初衷是:用自动化测试让测试人员从一些简单却重复的测试中解放出来。之所以用“关键字驱动”模式是因为我觉得这样能让测试人员(测试执行人员…

Linux系列讲解 —— FTP协议的应用

简单介绍一下FTP文件传输协议在linux系统中的应用。 目录 0. 基本概念1. FTP Server1.1 安装FTP Server1.2 FTP Server开启和关闭1.3 查看FTP Server是否开启1.4 FTP服务器配置 2. FTP Client2.1 lftp2.2 ftp2.3 sftp2.4 文件资源管理器集成的ftp和sftp 3. ftp常用命令 0. 基本…

IDE的下载和使用

IDE 文章目录 IDEJETBRAIN JETBRAIN 官网下载对应的ide 激活方式 dxm的电脑已经把这个脚本下载下来了,脚本是macjihuo 以后就不用买了

深入源码分析kubernetes informer机制(四)DeltaFIFO

[阅读指南] 这是该系列第四篇 基于kubernetes 1.27 stage版本 为了方便阅读,后续所有代码均省略了错误处理及与关注逻辑无关的部分。 文章目录 client-go中的存储结构DeltaFIFOdelta索引 keyqueue push操作delta push 去重 queue pop操作 总结 client-go中的存储结构…

设计模式

本文主要介绍设计模式的主要设计原则和常用设计模式。 一、UML画图 1.类图 2.时序图 二、设计模式原则 1.单一职责原则 就是一个方法、一个类只做一件事; 2.开闭原则 就是软件的设计应该对拓展开放,对修改关闭,这在java中体现最明显的就…

Docker本地镜像发布到阿里云

1. 本地镜像发布到阿里云 2. 镜像的生成方法 OPTIONS说明: -a :提交的镜像作者; -m :提交时的说明文字; 本次案例centosubuntu两个,当堂讲解一个,家庭作业一个,请大家务必动手,亲自实操。 docke…

Gradio部署应用到服务器不能正常访问

用Gradio部署一个基于ChatGLM-6B的应用,发布到团队的服务器上(局域网,公网不能访问),我将gradio应用发布到服务器的9001端口 import gradio as gr with gr.Blocks() as demo:......demo.queue().launch(server_port90…

ad+硬件每日学习十个知识点(34)23.8.14 (DCDC详细设计,续流二极管的选择,COMP引脚的环路设计)

文章目录 1.二极管的rrm电压和rms电压有什么不同2.DCDC续流二极管的选择3.充电电容4.COMP引脚的环路设计5.DCDC设计总结6.多路并联7.相位匹配8.工作模式9.低温输出偏离10.电源负载与效率11.降压升压模块 1.二极管的rrm电压和rms电压有什么不同 答: 二极管的 RRM &a…

redis主从复制、哨兵服务、持久化、数据类型

Top NSD DBA DAY10 案例1:配置主从复制案例2:配置带验证的主从复制案例3:哨兵服务案例4:使用RDB文件恢复数据案例5:AOF案例6:字符类型案例7:列表类型案例8:散列类型案例9&#xff…