[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.pswp.cn/news/38988.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38988.shtml
英文地址,請注明出處:http://en.pswp.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 | 美國航班數據分析

"在現代快節奏的生活中,航空旅行已經成為人們出行的重要方式之一。然而,航班的準時性一直以來都是旅客和航空公司關注的焦點。無論是商務出差還是休閑度假,乘客們都希望能夠在既定的時間內安全、準時地到達目的地。而對于航空公司而言,準點運營不僅關乎乘客體驗,還涉…