国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

一般情況下, 原始數(shù)據(jù)(又稱(chēng)粗?jǐn)?shù)據(jù), 存在缺失、異常、無(wú)關(guān)特征多等特點(diǎn))是無(wú)法直接應(yīng)用于模型進(jìn)行數(shù)據(jù)分析的, 因?yàn)槟P蛷?qiáng)烈依賴于相關(guān)性. 這種數(shù)據(jù)需要進(jìn)行特征提取,將數(shù)據(jù)的列進(jìn)行修正, 生成具有相關(guān)性的列.

特征提取的方法有兩種, 一種是面向數(shù)據(jù)的探索性數(shù)據(jù)分析; 另一種是面向模型的特征提取方法, 如嶺回歸的正則化方法.

本節(jié)將通過(guò)一個(gè)例子詳細(xì)介紹第一種方法, 利用探索性分析方法對(duì)原始數(shù)據(jù)進(jìn)行加工,以適應(yīng)模型.

1. 原始數(shù)據(jù)的準(zhǔn)備

數(shù)據(jù)的準(zhǔn)備工作包括數(shù)據(jù)的讀取、格式轉(zhuǎn)換、相關(guān)性展示等. 本部分所需要的數(shù)據(jù)可通過(guò)如下鏈接進(jìn)行下載

鏈接: https://pan.baidu.com/s/1t2CSFluDXVvFjPUNiBz0xg 提取碼: 9gjk

1.1 導(dǎo)入 python 模塊

import numpy as np 
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('fivethirtyeight')
import warnings
warnings.filterwarnings('ignore')
%matplotlib inline

1.2 導(dǎo)入數(shù)據(jù)集并進(jìn)行宏觀認(rèn)識(shí)

data=pd.read_csv('data/DieTanic_train.csv')
data.head()

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

data.columns

Index([‘PassengerId’, ‘Survived’, ‘Pclass’, ‘Name’, ‘Sex’, ‘Age’, ‘SibSp’,
‘Parch’, ‘Ticket’, ‘Fare’, ‘Cabin’, ‘Embarked’],
dtype=‘object’)

1.3 數(shù)據(jù)集描述

題目提供的訓(xùn)練數(shù)據(jù)集包含11個(gè)特征,分別是:

  • Survived:0代表死亡,1代表存活
  • Pclass:乘客所持票類(lèi),有三種值(1,2,3)
  • Name:乘客姓名
  • Sex:乘客性別
  • Age:乘客年齡(有缺失)
  • SibSp:乘客兄弟姐妹/配偶的個(gè)數(shù)(整數(shù)值)
  • Parch:乘客父母/孩子的個(gè)數(shù)(整數(shù)值)
  • Ticket:票號(hào)(字符串)
  • Fare:乘客所持票的價(jià)格(浮點(diǎn)數(shù),0-500不等)
  • Cabin:乘客所在船艙(有缺失)
  • Embark:乘客登船港口:S、C、Q(有缺失)

2. 數(shù)據(jù)的預(yù)處理

對(duì)數(shù)據(jù)的預(yù)處理是非常有必要的, 無(wú)論進(jìn)行機(jī)器學(xué)習(xí)還是深度學(xué)習(xí)都需要符合要求的特定格式的輸入. 預(yù)處理手段包括缺失數(shù)據(jù)的填補(bǔ)、異常數(shù)據(jù)的刪除、數(shù)據(jù)的歸一化、數(shù)據(jù)格式的轉(zhuǎn)換、類(lèi)別的規(guī)模是否均衡等等.

2.1 缺失數(shù)據(jù)的甄別

data.isnull().sum() #checking for total null values

PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64

2.2 類(lèi)別規(guī)模的評(píng)估

f,ax=plt.subplots(1,2,figsize=(18,8))
data['Survived'].value_counts().plot.pie(explode=[0,0.1],autopct='%1.1f%%',ax=ax[0],shadow=True)
ax[0].set_title('Survived')
ax[0].set_ylabel('')
sns.countplot('Survived',data=data,ax=ax[1])
ax[1].set_title('Survived')
plt.show()

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

訓(xùn)練集 891 名乘客中只有大約 350 人幸存,占比 38.4%. 兩個(gè)類(lèi)別的規(guī)模相差不懸殊, 可以進(jìn)行正常分類(lèi). 下一步,我們需要繼續(xù)深挖以獲取更有用的信息,了解哪些人的生存幾率更大, 哪些因素會(huì)影響生存幾率。我們?cè)噲D通過(guò)分析數(shù)據(jù)集的不同特征確定生存機(jī)率,這些特征包括 Sex, Port Of Embarcation, Age 等.

3. 數(shù)據(jù)特征的處理

此數(shù)據(jù)中包含三種類(lèi)型的數(shù)據(jù)類(lèi)型:

  • 范疇特征:Sex,Embarked.
    一種變量是有兩個(gè)或者兩個(gè)以上的分組,如性別變量。這類(lèi)變量無(wú)法進(jìn)行排序,稱(chēng)為定類(lèi)變量。
  • 序數(shù)特征: PClass
    序數(shù)特征與范疇特征類(lèi)似,不同的是它有排序的意義。例如,身高的高、中、矮,稱(chēng)為序數(shù)特征。這類(lèi)特征可以進(jìn)行相對(duì)排序。
  • 連續(xù)特征:Age
    特征的值可視為連續(xù)性隨機(jī)變量

3.1 第一個(gè)因變量- 分析范疇特征:Sex

data.groupby(['Sex','Survived'])['Survived'].count()

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

f,ax=plt.subplots(1,2,figsize=(18,8))
data[['Sex','Survived']].groupby(['Sex']).mean().plot.bar(ax=ax[0])
ax[0].set_title('Survived vs Sex')
sns.countplot('Sex',hue='Survived',data=data,ax=ax[1])
ax[1].set_title('Sex:Survived vs Dead')
plt.show()

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

這看起來(lái)很有趣。船上的男性人數(shù)遠(yuǎn)遠(yuǎn)多于女性人數(shù)。然而,女性獲救人數(shù)幾乎是男性獲救人數(shù)的兩倍。女性在船上的存活率約為75%,而男性約為18-19%。

這個(gè)特征似乎是一個(gè)比較重要的特征,為了確定其重要程度,還需要分析一下其它特征

3.2 定序特征分析:Pclass

pd.crosstab(data.Pclass,data.Survived,margins=True).style.background_gradient(cmap='summer_r')

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

f,ax=plt.subplots(1,2,figsize=(18,8))
data['Pclass'].value_counts().plot.bar(color=['#CD7F32','#FFDF00','#D3D3D3'],ax=ax[0])
ax[0].set_title('Number Of Passengers By Pclass')
ax[0].set_ylabel('Count')
sns.countplot('Pclass',hue='Survived',data=data,ax=ax[1])
ax[1].set_title('Pclass:Survived vs Dead')
plt.show()

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

我們可以清楚地看到,Pclass 1的Passenegers在救援時(shí)被給予了非常高的優(yōu)先級(jí)。盡管乘坐Pclass 3的乘客數(shù)量要高得多,但幸存的人數(shù)占比卻非常低,大約在25%左右。

Pclass 1 的存活率大約63%,而Pclass2的存活了大約48%,Pclass 3的存活率大約在25%左右,這個(gè)因素的差異可視為影響存活率的一個(gè)重要因素

讓我們?cè)偕钊胍稽c(diǎn),看看其他有趣的觀察結(jié)果。讓我們一起用 sex 和 Pclass 來(lái)檢查存活率。

pd.crosstab([data.Sex,data.Survived],data.Pclass,margins=True).style.background_gradient(cmap='summer_r')

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

3.3 連續(xù)性特征:Age

3.3.1 缺失數(shù)據(jù)特征的宏觀認(rèn)識(shí)
print('Oldest Passenger was of:',data['Age'].max(),'Years')
print('Youngest Passenger was of:',data['Age'].min(),'Years')
print('Average Age on the ship:',data['Age'].mean(),'Years')

Oldest Passenger was of: 80.0 Years
Youngest Passenger was of: 0.42 Years
Average Age on the ship: 29.69911764705882 Years

f,ax=plt.subplots(1,2,figsize=(18,8))
sns.violinplot("Pclass","Age", hue="Survived", data=data,split=True,ax=ax[0])
ax[0].set_title('Pclass and Age vs Survived')
ax[0].set_yticks(range(0,110,10))
sns.violinplot("Sex","Age", hue="Survived", data=data,split=True,ax=ax[1])
ax[1].set_title('Sex and Age vs Survived')
ax[1].set_yticks(range(0,110,10))
plt.show()

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

3.3.2 缺失數(shù)據(jù)特征的填充
  • 提取名字中的稱(chēng)謂信息
data['Initial']=0
for i in data:
    data['Initial']=data.Name.str.extract('([A-Za-z]+)\.') # 抽取致意用語(yǔ)

這里我們使用正則表達(dá)式[A-Za-z]+).它所做的是,它尋找在a-z或a-z之間的字符串,后面跟著分割號(hào)“點(diǎn)”,這樣我們就成功地從名字中提取出了名字中的稱(chēng)謂。

pd.crosstab(data.Initial,data.Sex).T.style.background_gradient(cmap='summer_r') #Checking the Initials with the Sex

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

有一些拼寫(xiě)錯(cuò)誤的首字母,如Mlle或Mme,它們代表的是Miss。我將把它們替換為Miss,其他的值也一樣。

data['Initial'].replace(['Mlle','Mme','Ms','Dr','Major','Lady','Countess','Jonkheer','Col','Rev','Capt','Sir','Don'],['Miss','Miss','Miss','Mr','Mr','Mrs','Mrs','Other','Other','Other','Mr','Mr','Mr'],inplace=True)

data.groupby('Initial')['Age'].mean() #lets check the average age by Initials

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

  • 填充年齡的缺失值
## Assigning the NaN Values with the Ceil values of the mean ages
data.loc[(data.Age.isnull())&(data.Initial=='Mr'),'Age']=33
data.loc[(data.Age.isnull())&(data.Initial=='Mrs'),'Age']=36
data.loc[(data.Age.isnull())&(data.Initial=='Master'),'Age']=5
data.loc[(data.Age.isnull())&(data.Initial=='Miss'),'Age']=22
data.loc[(data.Age.isnull())&(data.Initial=='Other'),'Age']=46

f,ax=plt.subplots(1,2,figsize=(20,10))
data[data['Survived']==0].Age.plot.hist(ax=ax[0],bins=20,edgecolor='black',color='red')
ax[0].set_title('Survived= 0')
x1=list(range(0,85,5))
ax[0].set_xticks(x1)
data[data['Survived']==1].Age.plot.hist(ax=ax[1],color='green',bins=20,edgecolor='black')
ax[1].set_title('Survived= 1')
x2=list(range(0,85,5))
ax[1].set_xticks(x2)
plt.show()

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

3.4 范疇特征:Embarked

pd.crosstab([data.Embarked,data.Pclass],[data.Sex,data.Survived],margins=True).style.background_gradient(cmap='summer_r')

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

3.5 對(duì)因素 Embarked 的空缺值進(jìn)行填充

我們看到大多數(shù)乘客從S港登機(jī),我們將NaN替換為S港。

data['Embarked'].fillna('S',inplace=True)

4. 特征工程

特征之間的相關(guān)性, 特征之間既不能存在強(qiáng)相關(guān)性,同時(shí)也不能不相關(guān).

sns.heatmap(data.corr(),annot=True,cmap='RdYlGn',linewidths=0.2) #data.corr()-->correlation matrix
fig=plt.gcf()
fig.set_size_inches(10,8)
plt.show()

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

各特征之間出現(xiàn)淺綠色為最佳, 深綠則是強(qiáng)相關(guān), 暖色則是負(fù)相關(guān).

4.1 熱力圖的解釋

首先要注意的是,只比較數(shù)字特性,因?yàn)楹苊黠@,我們不能在字母或字符串之間關(guān)聯(lián)。在理解這幅圖之前,讓我們先看看到底什么是相關(guān)性。

正相關(guān):如果特征A的增加導(dǎo)致特征B的增加,則兩者正相關(guān)。值1表示完全正相關(guān)。

負(fù)相關(guān):如果特征A的增加導(dǎo)致特征B的減少,則兩者是負(fù)相關(guān)的。值-1表示完全負(fù)相關(guān)。

現(xiàn)在我們假設(shè)兩個(gè)特征高度或完全相關(guān),一個(gè)特征的增加會(huì)導(dǎo)致另一個(gè)特征的增加。這意味著這兩個(gè)特征都包含高度相似的信息,而信息的差異非常小或沒(méi)有。這被稱(chēng)為多線性,因?yàn)樗鼈儼瑤缀跸嗤男畔ⅰ?/p>

你認(rèn)為我們應(yīng)該同時(shí)使用它們嗎,因?yàn)槠渲幸粋€(gè)是多余的。在建立或訓(xùn)練模型時(shí),我們應(yīng)該盡量消除冗余特征,因?yàn)樗鼫p少了訓(xùn)練時(shí)間和許多這樣的優(yōu)點(diǎn)。

現(xiàn)在從上面的熱圖中,我們可以看到這些特征并不是很相關(guān)。SibSp與Parch i的相關(guān)性最高,0.41。所以我們需要繼續(xù)處理特征

4.2 特征工程和數(shù)據(jù)清洗

什么叫特征工程?

當(dāng)我們得到一個(gè)具有特征的數(shù)據(jù)集時(shí),并不是所有的特征都是重要的??赡苡性S多冗余的特性應(yīng)該被消除。我們還可以通過(guò)觀察或從其他特征中提取信息來(lái)獲得或添加新的特征。

例如,使用Name特性獲取初始化特性。讓我們看看我們是否可以得到任何新的功能,并刪除一些。同時(shí),我們也會(huì)將現(xiàn)有的相關(guān)特征轉(zhuǎn)化為適合的形式進(jìn)行預(yù)測(cè)建模。

4.2.1 增加一個(gè)新的特征:Age_band

年齡特征的問(wèn)題:

前面提到的年齡特征是一個(gè)連續(xù)性特征, 年齡特征作為一個(gè)連續(xù)型特征用于機(jī)器學(xué)習(xí)是有問(wèn)題的。

例如:如果我說(shuō)按性別分組或安排運(yùn)動(dòng)員,我們可以很容易地將他們按男性和女性分開(kāi)。

如果我說(shuō)按年齡分組,你會(huì)怎么做?如果有30個(gè)人,則可能有30個(gè)年齡值。這是有問(wèn)題的。

我們需要將這些連續(xù)的值轉(zhuǎn)換成分類(lèi)的值,或者通過(guò)封邊,或者通過(guò)標(biāo)準(zhǔn)化。我將使用binning I。把不同年齡的人分組到一個(gè)箱子里,或者給他們分配一個(gè)值。

乘客的最大年齡是80歲。所以我們把0-80的范圍分成5個(gè)部分。所以80/5 = 16。箱子的大小是16。

data['Age_band']=0
data.loc[data['Age']<=16,'Age_band']=0
data.loc[(data['Age']>16)&(data['Age']<=32),'Age_band']=1
data.loc[(data['Age']>32)&(data['Age']<=48),'Age_band']=2
data.loc[(data['Age']>48)&(data['Age']<=64),'Age_band']=3
data.loc[data['Age']>64,'Age_band']=4
4.2.2 增加新特征:Family_Size and Alone

現(xiàn)在,我們可以創(chuàng)建一個(gè)名為“Family_size”和“Alone”的新功能,并對(duì)其進(jìn)行分析。這個(gè)特性是Parch和SibSp的總和。它給了我們一個(gè)綜合數(shù)據(jù),這樣我們就可以檢查存活率是否與乘客的家庭規(guī)模有關(guān)。表示乘客是否獨(dú)處。

data['Family_Size']=0
data['Family_Size']=data['Parch']+data['SibSp']#family size
data['Alone']=0
data.loc[data.Family_Size==0,'Alone']=1#Alone

f,ax=plt.subplots(1,2,figsize=(18,6))
sns.factorplot('Family_Size','Survived',data=data,ax=ax[0])
ax[0].set_title('Family_Size vs Survived')
sns.factorplot('Alone','Survived',data=data,ax=ax[1])
ax[1].set_title('Alone vs Survived')
plt.close(2)
plt.close(3)
plt.show()

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

4.2.3 增加新的特征:Fare_Range

由于票價(jià)也是一個(gè)連續(xù)的特征,我們需要將其轉(zhuǎn)換為有序值。為此我們將使用pandas.qcut。

所以qcut所做的就是根據(jù)我們通過(guò)的容器的數(shù)量來(lái)分割或排列值。所以如果我們傳遞5個(gè)箱子,它會(huì)將這些值等間隔地排列成5個(gè)獨(dú)立的箱子或值范圍。

data['Fare_Range']=pd.qcut(data['Fare'],4)
data.groupby(['Fare_Range'])['Survived'].mean().to_frame().style.background_gradient(cmap='summer_r')

data['Fare_cat']=0
data.loc[data['Fare']<=7.91,'Fare_cat']=0
data.loc[(data['Fare']>7.91)&(data['Fare']<=14.454),'Fare_cat']=1
data.loc[(data['Fare']>14.454)&(data['Fare']<=31),'Fare_cat']=2
data.loc[(data['Fare']>31)&(data['Fare']<=513),'Fare_cat']=3
4.2.4 將字符串值轉(zhuǎn)換為數(shù)字

因?yàn)槲覀儾荒軐⒆址畟鬟f給機(jī)器學(xué)習(xí)模型,所以我們需要將特Sex, Embarked 等變換為數(shù)字特征

data['Sex'].replace(['male','female'],[0,1],inplace=True)
data['Embarked'].replace(['S','C','Q'],[0,1,2],inplace=True)
data['Initial'].replace(['Mr','Mrs','Miss','Master','Other'],[0,1,2,3,4],inplace=True)
4.2.5 丟棄一些不需要的特征
  • Name–> 我們不需要名稱(chēng)特性,因?yàn)樗荒苻D(zhuǎn)換為任何分類(lèi)值。
  • Age–> 我們有Age_band特性,所以不需要它。
  • Ticket–> 它是任何不能分類(lèi)的隨機(jī)字符串。
  • Fare–> 已經(jīng)有了特征 Fare_cat,因此該特征也不需要了
  • Cabin–> 很多NaN值,也有很多乘客有多個(gè)艙位。所以這是一個(gè)無(wú)用的特性
  • Fare_Range–> 已經(jīng)有了特征 Fare_cat,因此該特征也不需要了
  • PassengerId–> 與分類(lèi)無(wú)關(guān)
data.drop(['Name','Age','Ticket','Fare','Cabin','Fare_Range','PassengerId'],axis=1,inplace=True)
sns.heatmap(data.corr(),annot=True,cmap='RdYlGn',linewidths=0.2,annot_kws={'size':20})
fig=plt.gcf()
fig.set_size_inches(18,15)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.show()

數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析

從上面的相關(guān)圖中,我們可以看到一些正相關(guān)的特征。如SibSp,F(xiàn)amily_Size ,Parch ,F(xiàn)amily_Size。還有一些負(fù)相關(guān)特征如 Alone 和 Family_Size

5. 模型的深入理解是獲高水平獎(jiǎng)項(xiàng)的重要保障

我們從EDA部分獲得了一些見(jiàn)解。但這樣的話,我們并不能準(zhǔn)確地預(yù)測(cè)或判斷一名乘客是生還還是遇難。現(xiàn)在我們將預(yù)測(cè)乘客是否會(huì)幸存使用一些優(yōu)秀的分類(lèi)算法。下面是我將使用的算法來(lái)制作模型:

  1. Logistic Regression
  2. Support Vector Machines(Linear and radial)
  3. Random Forest
  4. K-Nearest Neighbours
  5. Naive Bayes
  6. Decision Tree
從多元線性回歸問(wèn)題看邏輯回歸問(wèn)題

回歸問(wèn)題是尋找一個(gè)或多個(gè)自變量(解釋變量)與因變量(觀測(cè)變量)的關(guān)系,輸入為 x 1 , x 2 , ? ? , x m x_1,x_2,\cdots,x_m x1?,x2?,?,xm? y y y的關(guān)系

輸入變量 X = { x 1 , x 2 , ? ? , x m } X=\{x_1,x_2,\cdots,x_m\} X={x1?,x2?,?,xm?} y y y

假設(shè)我們有線性回歸回歸模型
y = β 0 + β 1 X 1 + ? + β m X m + ? y=\beta_0+\beta_1X_1+\cdots+\beta_mX_m+\epsilon y=β0?+β1?X1?+?+βm?Xm?+?

y = X β + ε y=X\beta+\varepsilon y=+ε
并且有 n n n組數(shù)據(jù) ( y ( i ) , x 1 ( i ) , … , x m ( i ) ) i = 1 n \big(y(i),x_1(i),\dots,x_m(i)\big)_{i=1}^n (y(i),x1?(i),,xm?(i))i=1n?.

從機(jī)器學(xué)習(xí)的角度看線性回歸問(wèn)題,是基于損失函數(shù)(Loss function)進(jìn)行建模的

S = ∑ i = 1 n ( y i ? y ^ i ) 2 S=\sum_{i=1}^n(y_i-\hat{y}_i)^2 S=i=1n?(yi??y^?i?)2

OLS 回歸用于計(jì)算回歸系數(shù) β i \beta_i βi? 的估值 β 0 , β 1 , ? ? , β n \beta_0,\beta_1,\cdots,\beta_n β0?,β1?,?,βn?,使誤差平方
L ( β ) = ∑ t = 1 k ( y ( t ) ? β 0 ? β 1 X 1 ( t ) ? ? ? β n X n ( t ) ) 2 = ∣ ∣ y ? X β ∣ ∣ 2 L(\beta)=\sum_{t=1}^k\Big(y(t)-\beta_0-\beta_1X_1(t)-\cdots-\beta_nX_n(t)\Big)^2=||y-X\beta||^2 L(β)=t=1k?(y(t)?β0??β1?X1?(t)???βn?Xn?(t))2=∣∣y?2
最小化。

? L ( β ) ? β = 2 X T ( y ? X β ) = 0 \frac{\partial L(\beta)}{\partial\beta}=2X^T(y-X\beta)=0 ?β?L(β)?=2XT(y?)=0

X T y = X T X β X^Ty=X^TX\beta XTy=XT
當(dāng) X T X X^TX XTX滿秩時(shí),得
β = ( X T X ) ? 1 X T y \beta=(X^TX)^{-1}X^Ty β=(XTX)?1XTy

如果兩個(gè)因子共線性時(shí),矩陣中的列剛好抵消,矩陣 X T X X^TX XTX是不滿秩的,沒(méi)有逆,此時(shí)的解不唯一。

from sklearn.linear_model import LogisticRegression #logistic regression
from sklearn.model_selection import train_test_split

train,test=train_test_split(data,test_size=0.3,random_state=0,stratify=data['Survived'])
train_X=train[train.columns[1:]]
train_Y=train[train.columns[:1]]
test_X=test[test.columns[1:]]
test_Y=test[test.columns[:1]]
X=data[data.columns[1:]]
Y=data['Survived']

model = LogisticRegression()
model.fit(train_X,train_Y)
model.coef_

array([[-0.73433775, 1.99943271, -0.37708714, 0.08199481, 0.11389123,
0.45564992, -0.43677308, -0.29509233, -0.38254696, 0.43878049]])

prediction3=model.predict(test_X)
print(prediction3)

[0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0
0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0
0 1 1 0 1 1 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0
0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 1
0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0
1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0
0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0
0 1 1 0 1 0 0 0 0]

from sklearn import metrics

print('The accuracy of the Logistic Regression is',metrics.accuracy_score(prediction3,test_Y))

The accuracy of the Logistic Regression is 0.8171641791044776文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-457304.html

到了這里,關(guān)于數(shù)學(xué)建模與數(shù)據(jù)分析 || 3. 面向數(shù)據(jù)的特征提取方法: 探索性數(shù)據(jù)分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包