⑴ 試編寫python程序,根據哥德巴赫猜想一:任何大於6的偶數都可表示為兩個素數之和,對100000內的偶數進行驗證
#coding=utf-8
importsys,time
frommathimportsqrt
defisprime(num):
foriinrange(2,int(sqrt(num))+1):
ifnum%i==0:
returnFalse
returnTrue
defgedebahe(num):
foriinrange(2,num//2+1):
ifisprime(i)andisprime(num-i):
returnTrue
returnFalsese
defmain(n):
foriinrange(6,n+1,2):
ifnotgedebahe(i,L):
print('failatnumber{}'.format(i))
break
else:
tip='success:allevensin{}canbethesumoftwoprimes.'
print(tip.format(n))
if__name__=='__main__':
start=time.time()
n=100000
iflen(sys.argv)>1:
n=int(sys.argv[1])
main(n)
end=time.time()
print('cost{}seconds'.format(end-start))
[willie@bogon pys]$ python gedebahe.py
success: all evens in 100000 can be the sum of two primes.
cost 24.8260421753 seconds
#coding=utf-8
importsys,time
frommathimportsqrt
defprimes(n):
#prepairdataspace
plist=[0,0]+list(range(2,n+1))
foriinrange(2,int(sqrt(n))+1):
ifplist[i]:
plist[i+i::i]=[0]*len(plist[i+i::i])
returnfilter(None,plist)
defgedebahe(n,L):
foriinL:
if(n-i)inL:
returnTrue
elifi>n//2+1:
returnFalse
defmain(n):
L=list(primes(n))
foriinrange(6,n+1,2):
ifnotgedebahe(i,L):
print('failatnumber{}'.format(i))
break
else:
tip='success:allevensin{}canbethesumoftwoprimes.'
print(tip.format(n))
if__name__=='__main__':
start=time.time()
n=100000
iflen(sys.argv)>1:
n=int(sys.argv[1])
main(n)
end=time.time()
print('cost{}seconds'.format(end-start))
[willie@bogon pys]$ python gedebahe.py
success: all evens in 100000 can be the sum of two primes.
cost 70.5533659458 seconds
⑵ 如何在spss軟體中加入python軟體
一、安裝Py插件
1、安裝 SPSS Statistics 19/20/21
2、安裝 SPSS Statistics Python Essentials (裡面含python,注意版本與你安裝的SPSS匹配!如果是SPSS21的話已經包含在SPSS21的安裝文件裡面了,此步驟跳過!)
注意:安裝 Essentials for Python 的版本取決於你安裝的 SPSS 版本,雖然是 64 位Windows 系統,如果安裝的是 32 位版 SPSS 就需要安裝 32 位 Essentials for Python 。
3、安裝 Scipy (版本務必與Python Essentials裡面的python匹配,19安裝2.6;20和21安裝2.7),x64位必須用x64位的Scipy,官方沒有,第三方的可以。官方有第三方的鏈接。
4、安裝 Numpy(版本務必與 Python Essentials裡面的python匹配,19安裝2.6;20和21安裝2.7),x64位必須用x64位的Numpy,官方沒有,第三方的可以。官方有第三方的鏈接。
Scipy/Numpy官方地址: http://www.scipy.org/Download
5、安裝 PLS(偏最小二乘)Extension Mole
拷貝到位,將PLS.py和plscommand.xml放入SPSS安裝文件夾下\extensions;或將PLS.py放入Python文件夾下
Lib\site-packages,plscommand.xml放入\extensions
⑶ 過7游戲用python怎麼寫
代碼為:
importre
defxiny(x,y):
returnbool(re.findall(x,y))
i=1
whilei<槐逗=100:
ifi%7==0orxiny("7",str(i))==True:
print("過",end=",")
else:
團缺print(i,end=",")
i=i+1
輸出結果:
1,2,3,4,5,6,過,8,9,10,11,12,13,過,15,16,過,18,19,20,過,22,23,24,25,26,過鉛或賣,過,29,30,31,32,33,34,過,36,過,38,39,40,41,過,43,44,45,46,過,48,過,50,51,52,53,54,55,過,過,58,59,60,61,62,過,64,65,66,過,68,69,過,過,過,過,過,過,過,過,過,過,80,81,82,83,過,85,86,過,88,89,90,過,92,93,94,95,96,過,過,99,100,
⑷ 數據科學家需要掌握的10個基本統計技術
數據科學家需要掌握的10個基本統計技術
無論您在數據的科學性問題上持哪種看法,都無法忽視數據的持續重要性,也不能輕視分析、組織和情境化數據的能力。 根據大量的就業數據和員工反饋信息統計,在「25個最佳美國就業機會」排行榜中,數據科學家排名第一。毫無疑問,數據科學家所做的具體工作內容將會進一步拓展。隨著機器學習等技術變得越來越普遍,深度學習等新興領域對研究人員和工程師的需求得到了巨大的推動,數據科學家們在創新和技術進步的浪潮中再次嶄露頭角。
編碼能力強大是很重要的,但數據科學並不專職於軟體工程(事實上,對Python很熟悉就足夠了)。數據科學家生活在編碼、統計學和批判性思維的交叉點上。正如喬希·威爾斯(JoshWills)所說的那樣:「數據科學家是一個比任何程序員都要好的統計學家,而且比任何統計學家都更擅長編程。」筆者個人知道有太多的軟體工程師希望轉向數據科學家,並盲目利用機器學習框架TensorFlow或Apache Spark,而不透徹理解背後的統計理論。因此出現了「統計學習」,一個與機器學習有關的理論框架,包含統計到功能分析的一系列專業領域。
為什麼學習統計學習?了解各種技術背後的想法是非常重要的,可以讓你知道如何以及何時使用它們。由簡入繁,首先要理解更簡單的方法,才好把握更復雜的方法。准確地評估一種方法的性能,了解它的工作效果多好或者多糟,這一點很重要。此外,這是一個令人興奮的研究領域,在科學,工業和金融領域有著重要的應用。最終,統計學習是培養現代數據科學家的基本要素。統計學習問題的例子有:
確定前列腺癌的危險因素。
根據記錄周期圖對錄制的音素進行分類。
根據人口統計、飲食和臨床測量,預測是否有人會發生心臟病。
自定義垃圾郵件檢測系統。
識別手寫郵政編碼中的數字。
將組織樣本分為幾個癌症類別之一。
建立人口調查數據中工資與人口變數之間的關系。
統計學習和機器學習之間的差異在於:
機器學習是人工智慧的一個子領域。
統計學習是統計學的一個分支。
機器學習更強調大規模應用和預測的准確性。
統計學習強調模型及其可解釋性,精確性和不確定性。
1 - 線性回歸:
在統計學中,線性回歸是一種通過擬合自變數與自變數之間最佳線性關系來預測目標變數的方法。最好的做法是確保每個點的形狀和實際觀測之間的所有距離之和盡可能小。形狀的適合性是「最好的」,因為在形狀的選擇上沒有其他位置會產生較少的誤差。線性回歸的2種主要類型是簡單線性回歸和多元線性回歸。簡單線性回歸使用一個獨立變數來通過擬合最佳線性關系來預測因變數。多重線性回歸使用多個獨立變數來通過擬合最佳線性關系來預測因變數。
選擇你在日常生活中使用的任何兩件相關的東西。如每月支出,月收入和過去三年每月的旅行次數的數據。就需要回答以下問題:
我明年的每月開支是多少?
哪個因素(每月收入或每月旅行次數)在決定我的每月支出時更重要?
月收入和每月旅行如何與每月支出相關聯?
2 - 分類:
分類是一種數據挖掘技術,它將類別分配給數據集合,以助進行更准確的預測和分析。有時也稱為決策樹,分類是用於對非常大的數據集進行分析的幾種方法之一。眼下有2大分類技術脫穎而出:Logistic回歸和判別分析。
Logistic回歸分析是當因變數是二分(二元)時進行的適當的回歸分析。像所有回歸分析一樣,Logistic回歸是預測分析。 Logistic回歸用於描述數據並解釋一個相關二元變數與一個或多個標稱、序數、區間或比例級別的獨立變數之間的關系。邏輯回歸可以檢查的問題類型:
每增加一磅的超重和每天吸一包香煙,肺癌的可能性(是vs否)會發生怎樣的變化?
體重卡路里攝入量,脂肪攝入量和參與者年齡對心臟病發作是否有影響(有vs無)?
在判別分析中,先驗已知2個或更多個組或群或群,並基於所測量的特徵將1個或更多個新觀察分類到1個已知群中。判別分析在每個響應類別中分別對預測因子X的分布進行建模,然後使用貝葉斯定理將它們翻轉為給定X的值的響應類別概率的估計。這樣的模型可以是線性的或二次的。
線性判別分析為每個觀測值計算「判別分數」,以便對它所處的響應變數類別進行分類。這些分數是通過尋找自變數的線性組合得到的。它假設每個類別內的觀察值都來自多變數高斯分布,預測因子的協方差在響應變數Y的所有k水平上是共同的。
二次判別分析提供了一種替代方法。和LDA一樣,QDA假定每個Y類的觀測值都是從高斯分布中得到的。但是,與LDA不同的是,QDA假定每個類都有其自己的協方差矩陣。換句話說,預測因子不被假定在Y中的每個k水平上具有共同的方差。
3 - 重采樣方法:
重采樣是從原始數據樣本中繪制重復樣本的方法。這是統計推斷的非參數方法。換句話說,重采樣方法不涉及使用通用分布表來計算近似p概率值。
重采樣根據實際數據生成唯一的采樣分布。它使用實驗方法而不是分析方法來生成獨特的抽樣分布。它產生無偏估計,因為它是基於研究者所研究數據的所有可能結果的無偏樣本。為了理解重采樣的概念,您應該理解術語Bootstrapping和交叉驗證:
Bootstrapping是一種技術,可以幫助您在很多情況下驗證預測模型的性能、集成方法、估計模型的偏差和方差。它通過對原始數據進行替換來進行采樣,並將「未選擇」的數據點作為測試用例。我們可以做這幾次,並計算平均分作為我們的模型性能的估計。
另一方面,交叉驗證是驗證模型性能的一種技術,它是通過將訓練數據分成k個部分來完成的。我們以k - 1部分作為訓練集,並使用「伸出部分」作為我們的測試集。我們重復k次不同的方式。最後,我們將k分數的平均值作為我們的業績估計。
通常對於線性模型,普通最小二乘法是考慮將它們適合於數據的主要標准。接下來的3種方法是可以為線性模型的擬合提供更好的預測精度和模型可解釋性的替代方法。
4 - 子集選擇:
這種方法確定了我們認為與響應相關的p預測因子的一個子集。然後,我們使用子集特徵的最小二乘擬合模型。
最佳子集選擇:這里我們對每個可能的p預測因子組合進行單獨的OLS回歸,然後查看最終的模型擬合。演算法分為2個階段:(1)擬合所有包含k預測因子的模型,其中k是模型的最大長度;(2)使用交叉驗證的預測誤差選擇單個模型。使用測試或驗證錯誤非常重要,而不是訓練錯誤來評估模型擬合,因為RSS和R 2單調增加更多的變數。最好的方法是在測試誤差估計值上交叉驗證並選擇具有最高R 2和最低RSS的模型。
向前逐步選擇考慮預測因子的一個小得多的子集。它從不含預測因子的模型開始,然後在模型中添加預測因子,直到所有預測因子都在模型中。被添加變數的順序是變數,其給出對擬合的最大的加法改進,直到沒有更多的變數使用交叉驗證的預測誤差來改進模型擬合。
向後逐步選擇開始將模型中的所有預測因子,然後迭代去除最不有用的預測因子。
混合方法遵循向前逐步回歸方法,但是,在添加每個新變數之後,該方法還可以去除對模型擬合沒有貢獻的變數。
5 - 收縮:
這種方法適合一個涉及所有p預測因子的模型,然而,估計系數相對於最小二乘估計向零收縮。這種縮水,又稱正規化,具有減少方差的作用。取決於執行什麼類型的收縮,其中一些系數可能恰好被估計為零。因此這個方法也執行變數選擇。將系數估計收縮為零的兩個最著名的技術是嶺回歸和Lasso。
嶺回歸類似於最小二乘,通過最小化一個稍微不同的數量估計系數。像OLS一樣,嶺回歸尋求降低RSS的系數估計值,但是當系數接近於零時,它們也會有收縮懲罰。這個懲罰的作用是將系數估計收縮到零。不用進入數學計算,知道嶺回歸縮小列空間方差最小的特徵是有用的。像在主成分分析中一樣,嶺回歸將數據投影到雙向空間,然後比高方差分量收縮低方差分量的系數,這相當於最大和最小主分量。
嶺回歸至少有一個缺點:它包括最終模型中的所有p預測值。犯規條款將使它們中的許多接近於零,但不完全為零。這對於預測准確性來說通常不是問題,但它可能使模型更難以解釋結果。 Lasso克服了這個缺點,並且能夠迫使一些系數歸零,只要s足夠小。由於s = 1導致有規律的OLS回歸,當s接近0時,系數收縮為零。因此,Lasso回歸也執行變數選擇。
6 - 維度降低:
維數減少將估計p + 1個系數的問題簡化為M + 1個系數的簡單問題,其中M
可以將主成分回歸描述為從大量變數中導出低維特徵集合的方法。數據的第一個主要組成方向是觀測值變化最大的。換句話說,第一台PC是盡可能接近數據的一條線。人們可以適應不同的主要組成部分。第二個PC是與第一個PC不相關的變數的線性組合,並且受這個約束的變化最大。這個想法是主要的組成部分使用隨後正交方向的數據的線性組合捕獲數據中最大的變化。通過這種方式,我們也可以結合相關變數的效果,從可用數據中獲取更多信息,而在正則最小二乘中,我們將不得不放棄其中一個相關變數。
我們上面描述的PCR方法包括確定最能代表預測因子的X的線性組合。這些組合(方向)以無監督的方式被識別,因為響應Y不用於幫助確定主要組件方向。也就是說,響應Y不監督主成分的識別,因此不能保證最能解釋預測因子的方向對於預測響應(即使經常假設)也是最好的。偏最小二乘法(PLS)是一個監督的替代PCR。與PCR一樣,PLS是一種降維方法,它首先識別一組新的較小的特徵,這些特徵是原始特徵的線性組合,然後通過最小二乘法擬合一個線性模型到新的M特徵。然而,與PCR不同的是,PLS利用響應變數來識別新的特徵。
7 - 非線性模型:
在統計學中,非線性回歸是回歸分析的一種形式,其中觀測數據是由一個函數建模的,該函數是模型參數的非線性組合,並取決於一個或多個自變數。數據通過逐次逼近的方法進行擬合。以下是一些處理非線性模型的重要技巧:
如果實數的函數可以寫成區間指示函數的有限線性組合,則稱實數為函數。非正式地說,一個階梯函數是一個只有很多片段的分段常量函數。
分段函數是由多個子函數定義的函數,每個子函數應用於主函數域的一定間隔。分段實際上是表達函數的一種方式,而不是函數本身的一個特徵,但是具有額外的限定,可以描述函數的性質。例如,分段多項式函數是在其每個子域上是多項式的函數,但是每個子域上可能是不同的。
樣條函數是由多項式分段定義的特殊函數。在計算機圖形學中,樣條是指分段多項式參數曲線。由於其結構簡單,評估方便和准確,以及通過曲線擬合和互動式曲線設計逼近復雜形狀的能力,樣條曲線是流行的曲線。
廣義加性模型是一種線性預測模型,其中線性預測變數線性依賴於某些預測變數的未知光滑函數,興趣集中在對這些光滑函數的推理上。
8 - 基於樹的方法:
基於樹的方法可以用於回歸和分類問題。這些涉及將預測空間分層或分割成若干簡單區域。由於用於分割預測變數空間的分裂規則集合可以在樹中進行概括,所以這些類型的方法被稱為決策樹方法。下面的方法生成多個樹,然後結合在一起產生一個單一的共識預測。
套袋(Bagging)是減少預測方差的方法,通過使用重復組合來生成原始數據集中的訓練數據,從而生成與原始數據相同的多樣性。通過增加你的訓練集的大小,你不能提高模型的預測力,只是減少方差,勉強把預測調整到預期的結果。
提升(Boosting)是一種使用幾種不同的模型計算產出的方法,然後使用加權平均方法對結果進行平均。通過改變你的加權公式,結合這些方法的優點和缺陷,你可以使用不同的狹義調整模型,為更廣泛的輸入數據提供一個很好的預測力。
隨機森林(random forest )演算法實際上非常類似於套袋。你也可以繪制訓練集的隨機bootstrap樣本。但是,除了自舉樣本之外,還可以繪制隨機子集來訓練單個樹;在套袋中,你給每個樹一套完整功能。由於隨機特徵選擇,與常規套袋相比,樹木之間的相互獨立性更高,這通常會帶來更好的預測性能(由於更好的方差偏差權衡),而且速度更快,因為每棵樹只能從功能的一個子集。
9 - 支持向量機:
SVM是機器學習中監督學習模型中的一種分類技術。通俗地說,它涉及於找到超平面(2D中的線,3D中的平面和更高維中的超平面,更正式地說,超平面是n維空間中的n維空間)最大保證金從本質上講,它是一個約束優化問題,其邊界被最大化,受限於它對數據進行了完美的分類(硬邊緣)。
這種「支持」這個超平面的數據點被稱為「支持向量」。對於兩類數據不能線性分離的情況,這些點被投影到可能線性分離的分解(高維)空間。涉及多個類的問題可以分解為多個一對一或者一對二的分類問題。
10 - 無監督學習:
到目前為止,我們只討論了監督學習技術,其中組是已知的,提供給演算法的經驗是實際實體和它們所屬的組之間的關系。當數據的組(類別)未知時,可以使用另一組技術。它們被稱為無監督的,因為它會留在學習演算法中以找出所提供的數據中的模式。聚類是無監督學習的一個例子,其中不同的數據集被聚類為密切相關的項目組。下面是最廣泛使用的無監督學習演算法的列表:
主成分分析通過識別一組具有最大方差和相互不相關的特徵的線性組合來幫助產生數據集的低維表示。這種線性維度技術有助於理解變數在無監督環境下的潛在相互作用。
k-Means聚類:根據到群集質心的距離將數據分為k個不同的集群。
分層集群:通過創建集群樹來構建集群的多級分層結構。
以上是一些基本的統計技術的簡單解釋與說明,可以幫助數據科學項目經理和主管人員更好地理解他們的數據科學小組背後隱藏的內容。實際上,一些數據科學小組純粹通過python和R庫運行演算法。他們中的大多數甚至不必考慮潛在的數學問題。但是,能夠理解統計分析的基礎知識可以為您的團隊提供更好的方法。