日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python predictabel_统计学习方法的python实现

發布時間:2024/3/12 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python predictabel_统计学习方法的python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

########################################################

#5.1 邏輯斯蒂回歸實現

#原理:構造分類模型使得當前的數據集出現的可能性最大-》最大似然法

########################################################

def logit_regression():

import pandas as pd# pandas 的教程:http://blog.csdn.net/overstack/article/details/9001565

import statsmodels.api as sm

import pylab as pl

import numpy as np

#步驟1:read the data in

df = pd.read_csv("http://www.ats.ucla.edu/stat/data/binary.csv")

# take a look at the dataset

print (df.head())#最上面的幾列,也有df.tail(3)

# admit gre gpa rank

# 0 0 380 3.61 3

# 1 1 660 3.67 3

# 2 1 800 4.00 1

# 3 1 640 3.19 4

# 4 0 520 2.93 4

# rename the 'rank' column because there is also a DataFrame method called 'rank'

df.columns = ["admit", "gre", "gpa", "prestige"]

print (df.columns)

# array([admit, gre, gpa, prestige], dtype=object)

##步驟2:得到數據的基本統計信息

# summarize the data

print (df.describe())

# admit gre gpa prestige

# count 400.000000 400.000000 400.000000 400.00000

# mean 0.317500 587.700000 3.389900 2.48500

# std 0.466087 115.516536 0.380567 0.94446

# min 0.000000 220.000000 2.260000 1.00000

# 25% 0.000000 520.000000 3.130000 2.00000

# 50% 0.000000 580.000000 3.395000 2.00000

# 75% 1.000000 660.000000 3.670000 3.00000

# max 1.000000 800.000000 4.000000 4.00000

# take a look at the standard deviation of each column

print (df.std())

# admit 0.466087

# gre 115.516536

# gpa 0.380567

# prestige 0.944460

# frequency table cutting presitge and whether or not someone was admitted

print (pd.crosstab(df['admit'], df['prestige'], rownames=['admit']))

# prestige 1 2 3 4

# admit

# 0 28 97 93 55

# 1 33 54 28 12

# plot all of the columns

df.hist()

pl.show()

#步驟3:dummify rank #就是把多元變量變成二元變量

dummy_ranks = pd.get_dummies(df['prestige'], prefix='prestige')

print (dummy_ranks.head())

# prestige_1 prestige_2 prestige_3 prestige_4

# 0 0 0 1 0

# 1 0 0 1 0

# 2 1 0 0 0

# 3 0 0 0 1

# 4 0 0 0 1

# create a clean data frame for the regression

cols_to_keep = ['admit', 'gre', 'gpa']

data = df[cols_to_keep].join(dummy_ranks.ix[:, 'prestige_2':])

print (data.head())#為什么不用prestige_1? prevent multicollinearity, or the dummy variable trap

# admit gre gpa prestige_2 prestige_3 prestige_4

# 0 0 380 3.61 0 1 0

# 1 1 660 3.67 0 1 0

# 2 1 800 4.00 0 0 0

# 3 1 640 3.19 0 0 1

# 4 0 520 2.93 0 0 1

# manually add the intercept

data['intercept'] = 1.0

#步驟4.Performing the regression

train_cols = data.columns[1:]

# Index([gre, gpa, prestige_2, prestige_3, prestige_4], dtype=object)

logit = sm.Logit(data['admit'], data[train_cols])

# fit the model

result = logit.fit()

#步驟5. Interpreting the result

# cool enough to deserve it's own gist

print (result.summary())

# look at the confidence interval of each coeffecient

print (result.conf_int())

# 0 1

# gre 0.000120 0.004409

# gpa 0.153684 1.454391

# prestige_2 -1.295751 -0.055135

# prestige_3 -2.016992 -0.663416

# prestige_4 -2.370399 -0.732529

# intercept -6.224242 -1.755716

#odds ratio

#Take the exponential of each of the coeffecients to generate the odds ratios.

# This tells you how a 1 unit increase or decrease in a variable affects the odds of being admitted.

# odds ratios only

print (np.exp(result.params))

# gre 1.002267

# gpa 2.234545

# prestige_2 0.508931

# prestige_3 0.261792

# prestige_4 0.211938

# intercept 0.018500

#預測

data['admit_pred']=result.predict(data[train_cols])

print (data.head())

#更多http://blog.yhathq.com/posts/logistic-regression-and-python.html

########################################################

#5.2 最大熵模型

#原理:同樣是求得模型,使得模型的熵最大,也用最大似然法

#最大熵采取的原則就是:保留全部的不確定性,將風險降到最小

#迭代優化技術

########################################################

#注:(來自python 自然語言處理)一些迭代優化技術比別的快得多。當訓練最大熵模型時,應避免使用廣義

#迭代縮放(Generalized Iterative Scaling ,GIS)或改進的迭代縮放(Improv

#ed Iterative Scaling ,IIS ) , 這兩者都比共軛梯度 (Conjugate Gradient, CG)

#和 BFGS 優化方法慢很多。

#樸素貝葉斯分類器和最大熵分類器之間的一個重要差異是它們可以被用來回答問題的

#類型。樸素貝葉斯分類器是一個生成式分類器的例子,建立一個模型,預測 P(input, label),

#即(input, label)對的聯合概率。因此,生成式模型可以用來回答下列問題:

#1. 一個給定輸入的最可能的標簽是什么?

#2. 對于一個給定輸入,一個給定標簽有多大可能性?

#3. 最有可能的輸入值是什么?

#4. 一個給定輸入值的可能性有多大?

#5. 一個給定輸入具有一個給定標簽的可能性有多大?

#6. 對于一個可能有兩個值中的一個值 (但我們不知道是哪個) 的輸入, 最可能的標簽

#是什么?

#另一方面,最大熵分類器是條件式分類器的一個例子。條件式分類器建立模型預測 P(l

#abel|input)——一個給定輸入值的標簽的概率。 因此, 條件式模型仍然可以被用來回答問題 1

#和 2。然而,條件式模型不能用來回答剩下的問題 3-6。

#一般情況下,生成式模型確實比條件式模型強大,因為我們可以從聯合概率 P(input, la

#bel)計算出條件概率 P(label|input),但反過來不行。然而,這種額外的能力是要付出代價的。

#由于該模型更強大的,它也有更多的“自由參數”需要學習的。而訓練集的大小是固定的。

#因此, 使用一個更強大的模型時, 我們可用來訓練每個參數的值的數據也更少, 使其難以找

#到最佳參數值。 結果是一個生成式模型回答問題 1 和 2 可能不會與條件式模型一樣好, 因為

#條件式模型可以集中精力在這兩個問題上。然而,如果我們確實需要像 3-6 問題的答案, 那

#么我們別無選擇,只能使用生成式模型。

#生成式模型與條件式模型之間的差別類似與一張地形圖和一張地平線的圖片之間的區

#別。 雖然地形圖可用于回答問題的更廣泛, 制作一張精確的地形圖也明顯比制作一張精確的

#地平線圖片更加困難。

def max_Entropy():

#這里直接使用nltk中的最大熵訓練器

import nltk

#1.提取特征,使用一個字典,這個字典稱作特征集

#1.1 特征提取器1

def gender_feature(word):

return {'last_letter':word[-1]}

#1.2 特征提取器2

def gender_feature2(word):

return {'suffix1': word[-1:],'suffix2': word[-2:]}

#1.3 特征提取器3 一個過擬合的特征提取器

def gender_feature3(name):

feature={}

feature['firstletter']=name[0].lower()

feature['lastletter']=name[-1].lower()

for letter in 'abcdefghijklmnopqrstuvwxyz':

# for letter in name:

feature['count(%s)'%letter]=name.lower().count(letter)

feature['has(%s)'%letter]=(letter in name.lower())

return feature

#2.生成訓練集和測試集(包括預處理)

from nltk.corpus import names

import random

_names=[(name,'male') for name in names.words('male.txt')]+\

[(name,'female') for name in names.words('female.txt')]

random.shuffle(_names)

#分類器的輸入的特征是 [(特征,組別)```]

featureset=[(gender_feature(name),g) for (name,g) in _names]

train_set,test_set=featureset[500:],featureset[:500]

#另一種變化的做法是 數據集分成三部分 開發訓練集,開發測試集,測試集

#開發測試集用于檢測,查看錯誤

#3.使用最大熵分類器訓練數據

#classifier=nltk.NaiveBayesClassifier.train(train_set)

classifier=nltk.MaxentClassifier.train(train_set)#對這個數據集,比樸素貝葉斯的準確率高點

#4.使用,或者用測試集評估質量

print(classifier.classify(gender_feature('Neo')))

print(nltk.classify.accuracy(classifier,test_set))

#我們可以檢查分類器,確定哪些特征對于區分名字的性別是最有效的。

classifier.show_most_informative_features(5)

########################################################

#5.2 最大熵模型

#原理:同樣是求得模型,使得模型的熵最大,也用最大似然法

#最大熵采取的原則就是:保留全部的不確定性,將風險降到最小

#迭代優化技術

########################################################

#注:(來自python 自然語言處理)一些迭代優化技術比別的快得多。當訓練最大熵模型時,應避免使用廣義

#迭代縮放(Generalized Iterative Scaling ,GIS)或改進的迭代縮放(Improv

#ed Iterative Scaling ,IIS ) , 這兩者都比共軛梯度 (Conjugate Gradient, CG)

#和 BFGS 優化方法慢很多。

#樸素貝葉斯分類器和最大熵分類器之間的一個重要差異是它們可以被用來回答問題的

#類型。樸素貝葉斯分類器是一個生成式分類器的例子,建立一個模型,預測 P(input, label),

#即(input, label)對的聯合概率。因此,生成式模型可以用來回答下列問題:

#1. 一個給定輸入的最可能的標簽是什么?

#2. 對于一個給定輸入,一個給定標簽有多大可能性?

#3. 最有可能的輸入值是什么?

#4. 一個給定輸入值的可能性有多大?

#5. 一個給定輸入具有一個給定標簽的可能性有多大?

#6. 對于一個可能有兩個值中的一個值 (但我們不知道是哪個) 的輸入, 最可能的標簽

#是什么?

#另一方面,最大熵分類器是條件式分類器的一個例子。條件式分類器建立模型預測 P(l

#abel|input)——一個給定輸入值的標簽的概率。 因此, 條件式模型仍然可以被用來回答問題 1

#和 2。然而,條件式模型不能用來回答剩下的問題 3-6。

#一般情況下,生成式模型確實比條件式模型強大,因為我們可以從聯合概率 P(input, la

#bel)計算出條件概率 P(label|input),但反過來不行。然而,這種額外的能力是要付出代價的。

#由于該模型更強大的,它也有更多的“自由參數”需要學習的。而訓練集的大小是固定的。

#因此, 使用一個更強大的模型時, 我們可用來訓練每個參數的值的數據也更少, 使其難以找

#到最佳參數值。 結果是一個生成式模型回答問題 1 和 2 可能不會與條件式模型一樣好, 因為

#條件式模型可以集中精力在這兩個問題上。然而,如果我們確實需要像 3-6 問題的答案, 那

#么我們別無選擇,只能使用生成式模型。

#生成式模型與條件式模型之間的差別類似與一張地形圖和一張地平線的圖片之間的區

#別。 雖然地形圖可用于回答問題的更廣泛, 制作一張精確的地形圖也明顯比制作一張精確的

#地平線圖片更加困難。

def max_Entropy():

#這里直接使用nltk中的最大熵訓練器

import nltk

#1.提取特征,使用一個字典,這個字典稱作特征集

#1.1 特征提取器1

def gender_feature(word):

return {'last_letter':word[-1]}

#1.2 特征提取器2

def gender_feature2(word):

return {'suffix1': word[-1:],'suffix2': word[-2:]}

#1.3 特征提取器3 一個過擬合的特征提取器

def gender_feature3(name):

feature={}

feature['firstletter']=name[0].lower()

feature['lastletter']=name[-1].lower()

for letter in 'abcdefghijklmnopqrstuvwxyz':

# for letter in name:

feature['count(%s)'%letter]=name.lower().count(letter)

feature['has(%s)'%letter]=(letter in name.lower())

return feature

#2.生成訓練集和測試集(包括預處理)

from nltk.corpus import names

import random

_names=[(name,'male') for name in names.words('male.txt')]+\

[(name,'female') for name in names.words('female.txt')]

random.shuffle(_names)

#分類器的輸入的特征是 [(特征,組別)```]

featureset=[(gender_feature(name),g) for (name,g) in _names]

train_set,test_set=featureset[500:],featureset[:500]

#另一種變化的做法是 數據集分成三部分 開發訓練集,開發測試集,測試集

#開發測試集用于檢測,查看錯誤

#3.使用最大熵分類器訓練數據

#classifier=nltk.NaiveBayesClassifier.train(train_set)

classifier=nltk.MaxentClassifier.train(train_set)#對這個數據集,比樸素貝葉斯的準確率高點

#4.使用,或者用測試集評估質量

print(classifier.classify(gender_feature('Neo')))

print(nltk.classify.accuracy(classifier,test_set))

#我們可以檢查分類器,確定哪些特征對于區分名字的性別是最有效的。

classifier.show_most_informative_features(5)

http://nuil.cn

總結

以上是生活随笔為你收集整理的python predictabel_统计学习方法的python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产无遮挡又黄又爽又色视频 | 狠狠干狠狠操视频 | 91成人免费在线视频 | 精品自拍视频在线观看 | av中文字幕av | 青青草视频在线观看免费 | 90岁老太婆乱淫 | 少妇影院在线观看 | 日韩美女视频一区 | 欧美丰满美乳xxⅹ高潮www | 国产免费一区二区三区在线播放 | 浓精喷进老师黑色丝袜在线观看 | 午夜三级网站 | 特级做a爰片毛片免费69 | 欧美性视频网站 | 日韩激情啪啪 | 超碰国产在线观看 | 日欧一级片| 日本少妇aaa| av在线天天| 青青草一区| 欧美日韩在线视频观看 | 波多野结衣丝袜 | 中文字幕乱码人妻一区二区三区 | 亚洲中文字幕97久久精品少妇 | 久久久www成人免费精品 | 69日影院 | 精品区一区二区 | 91成人动漫| 女人裸体又黄 | 亚洲熟妇无码久久精品 | 丁香婷婷一区二区三区 | 小视频在线观看 | 亚洲1级片 | 手机看片欧美日韩 | 无码国产精品一区二区色情男同 | 日韩欧美中文字幕在线播放 | 中文字幕乱码免费 | 免费一级淫片aaa片毛片a级 | 青青在线观看视频 | jlzzjlzzjlzz亚洲人| 蜜桃av噜噜一区二区三区小说 | 99在线精品视频免费观看20 | 日本三级韩国三级美三级91 | 日韩国产欧美在线观看 | 爆操巨乳 | 蜜臀va| 综合视频一区二区 | 先锋影视av | 最新视频 - 8mav | 成年女人免费视频 | 爱爱一区二区三区 | 国内视频一区二区 | 女女同性被吸乳羞羞 | 欧美成人精品欧美一级乱 | 成人在线观看网站 | 亚洲在线视频免费观看 | 黄色aaa大片| 韩国三级在线视频 | 99久久精品国产成人一区二区 | 我们好看的2018视频在线观看 | 熟妇高潮一区二区三区在线播放 | 欧美三级午夜理伦三级中视频 | 欧美成人中文字幕 | 亚洲黄色影院 | 欧美成人a∨高清免费观看 国产精品999视频 | 性少妇xxxxx 亚洲一卡二卡在线观看 | 超碰888| 国产v亚洲v天堂无码 | 日韩精品tv | 少妇高潮一69aⅹ | 亚洲欧美视频在线观看 | 大肉大捧一进一出视频 | 在线视频免费播放 | www.com在线观看| 亚洲天堂成人网 | 亚洲一区 在线播放 | 免费在线网站 | 国产精品久久免费视频 | 国产男同gay网站 | 日本japanese乳偷乱熟 | 男男巨肉啪啪动漫3d | 欧美亚洲欧美 | 99视频国产精品 | 中文天堂在线观看 | 亚洲精品美女网站 | 91网站免费在线观看 | 日本一区二区不卡在线观看 | 免费无遮挡网站 | 黄色香蕉软件 | 黄色裸体视频 | 久久久18禁一区二区三区精品 | 亚洲成人网在线 | 久久九九免费视频 | 欧美成人福利 | 日韩激情视频在线观看 | 涩涩国产| 亚洲国产欧美精品 | 欧美激情在线播放 |