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

news2025/1/18 13:54:08

这篇文章主要讲述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.coloradmin.cn/o/884696.html

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

相关文章

Spring Boot+ redis执行lua脚本的5种方式

Spring Boot redis执行lua脚本示例 文章目录 Spring Boot redis执行lua脚本示例0.前言1.基础介绍2.步骤2.1. 引入依赖1. 使用Jedis作为Redis客户端:2. 使用Lettuce作为Redis客户端: 2.2. 配置文件使用Jedis作为Redis客户端的配置文件(applica…

突破防线!泛微OA任意文件上传Getshell

子曰:“巧言令色,鲜矣仁。” 漏洞复现 访问漏洞url: 存在漏洞的路径为 /weaver/weaver.common.Ctrl/.css?arg0com.cloudstore.api.service.Service_CheckApp&arg1validateApp漏洞利用: 漏洞证明: 文笔生疏&…

2021年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:统计指定范围里的数 给定一个数的序列S,以及一个区间[L, R], 求序列中介于该区间的数的个数,即序列中大于等于L且小于等于R的数的个数。 时间限制:1000 内存限制:65536 输入 第一行1个整数n、,分别表…

Intel 12代酷睿集体大降价!三折太离谱了

之前有德国媒体报道称,Intel 12/13代酷睿以及即将发布的14代酷睿,将会全面涨价。 没想到,12代酷睿大降价了,幅度相当不可思议,不过至少目前仅限美国市场,新蛋、亚马逊、MicroCenter等大型零售商集体行动。 …

C#__匿名方法和Lambda表达式

class Program{static void Main(string[] args){// 匿名方法&#xff1a;方法没有名字Func<int, int, int> plus delegate (int a, int b){return a b;};// 这里相当于直接把要引用的方法直接写在后面// 优点&#xff1a;减少了要编写的代码&#xff0c;减少代码的复杂…

BGP的路由反射器和联邦

1、规划IP及拓扑图 172.16.0.0/16 借到24位 可用范围网段&#xff1a;0-31 172.16.0.0/24 要分6个网段IP借3位 172.16.0.0/27 172.16.0.32/27 172.16.0.64/27 172.16.0.96/27 172.16.0.128/27 172.16.0.160/27 作为骨干网段 172.16.1.0/24 6个建邻环回…

生信豆芽菜-相关性散点图

网址&#xff1a;http://www.sxdyc.com/panCancerScatterDiagram 1、数据准备 第一个文件&#xff1a;相关性分析结果 2、选择想要显示的肿瘤的名称&#xff0c;如果是多个&#xff0c;就用逗号隔开&#xff08;这里的逗号为英文字符下的逗号&#xff09; 3、结果 当然&…

Lie group 专题:Lie 群

Lie group 专题&#xff1a;Lie 群 流形 流形的定义 一个m维流形是满足以下条件的集合M&#xff1a;存在可数多个称为坐标卡&#xff08;图集&#xff09;的子集合族.以及映到的连通开子集上的一对一映射&#xff0c;,称为局部坐标映射&#xff0c;满足以下条件 坐标卡覆盖M…

Program Evaluation and Review Technique(PERT)

Program Evaluation and Review Technique&#xff08;PERT&#xff09;计划评估和审查技术 大多数的时候&#xff0c;我不太记得概念&#xff0c;大致是这么回事&#xff0c;为了方便记忆&#xff0c;从小到大 1)beta distribution 贝塔分布&#xff08;成本&#xff0c;也可以…

C++11并发与多线程笔记(2)线程启动、结束,创建线程多法、join,detach

C11并发与多线程笔记&#xff08;2&#xff09; 线程启动、结束&#xff0c;创建线程多法、join&#xff0c;detach 1. 范例演示线程运行的开始1.1 创建一个线程&#xff1a;1.2 join1.3 datch1.4 joinable 2. 其他创建线程的方法2.1 用类 重载了函数调用运算符2.2 lambda表达式…

行业常识_Modbus

文章目录 1 Modbus1.1 Modbus是啥1.2 应用1.3 协议变体及区别1.3.1 物理层1.3.2 帧结构1.3.3 传输速率1.3.4 连接方式1.3.5 网络依赖性1.3.5 安全性 1.4 传输方式1.4.1 协议数据单元 1.5 Modbus协议数据模型1.6 Modbus地址模式 1 Modbus 1.1 Modbus是啥 Modbus是一种协议。 其…

AUTOSAR规范与ECU软件开发(实践篇)3.2 ETAS AUTOSAR系统解决方案介绍(上)

1、ETAS AUTOSAR系统解决方案介绍 博世集团ETAS公司基于其强大的研发实力为用户提供了一套高效、 可靠的AUTOSAR系统解决方案&#xff0c; 该方案覆盖了软件架构设计、 应用层模型设计、 基础软件开发、 软件虚拟验证等各个方面&#xff0c; 如图3.5所示&#xff0c; 其中深色…

什么是接口测试,如何做接口测试?

比起点点点的功能测试&#xff0c;“接口测试”显得专业又高大上&#xff0c;也因此让有些初级测试人员“望而生畏”。别担心&#xff0c;其实接口测试也是功能测试的一种&#xff0c;它是针对接口进行的功能测试。 写在前面&#xff1a;本文参考了茹炳晟老师的《测试工程师 全…

四张图片道清AI大模型的发展史(1943-2023)

四张图片道清AI大模型的发展史(1943-2023) 现在最火的莫过于GPT了&#xff0c;也就是大规模语言模型(LLM)。“LLM” 是 “Large Language Model”&#xff08;大语言模型&#xff09;的简称&#xff0c;通常用来指代具有巨大规模参数和复杂架构的自然语言处理模型&#xff0c;…

NuGet控制台命令初步使用

查看所有安装的包&#xff0c; 查找包&#xff0c;提示Nuget版本低&#xff1b;安装一个更高版本&#xff1b; 查看所有安装的包&#xff0c; 查找名字包含某字符串的包&#xff0c; 查找名字包含某字符串的包&#xff0c; 安装&#xff0c;使用-version指定版本&#xff0c;可…

AUTOSAR规范与ECU软件开发(实践篇)3.3 AUTOSAR系统解决方案介绍(下)

示例将遵循AUTOSAR方法论来进行开发&#xff0c; 所用的AUTOSAR解决方案如图3.6所示。 图3.6 AUTOSAR系统解决方案 首先&#xff0c; 使用Matlab/Simulink来实现部分软件组件级的开发&#xff0c; 主要包括LightRequestSWC和LightControlSWC&#xff0c; 并自动生成应用层软件组…

Python是什么?它有什么用途?

Python是什么&#xff1f; Python是一门具有优雅和简洁语法的高级编程语言。它由荷兰程序员Guido van Rossum创造并于上世纪90年代初发布。Python的设计理念强调可读性和清晰性&#xff0c;使得代码编写变得轻松且容易理解。这门语言以其独特的缩进方式来标记代码块&#xff0…

手撕LFU缓存

手撕LRU缓存_右大臣的博客-CSDN博客 是LRU的升级&#xff0c;多了一个访问次数的维度 实现 LFUCache 类&#xff1a; LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象int get(int key) - 如果键 key 存在于缓存中&#xff0c;则获取键的值&#xff0c;否则返…

16.3.4 【Linux】系统资源的观察

free &#xff1a;观察内存使用情况 系统当中有 2848MB 左右的实体内存&#xff0c;我的 swap 有 1GB 左右&#xff0c; 那我使用free -m 以 MBytes 来显示时&#xff0c;就会出现上面的信息。Mem 那一行显示的是实体内存的量&#xff0c;Swap 则是内存交换空间的量。 total 是…

Espresso测试用例运行前置配置条件

&#xff08;一&#xff09;【开发者选择】将USB调试/USB安装/USB调试&#xff08;安全设置&#xff09;开启&#xff1b; &#xff08;否则运行测试用例时&#xff0c;无法安装&#xff09; &#xff08;二&#xff09;开启【自启动】 &#xff08;需要授权&#xff0c;否则无…