pythonによるKaggleのTitanicデータ解析例
35974 ワード
一、データ処理方向では、R言語よりもpythonの方がプログラミング言語に近いので、まずpandasパッケージの内容を学び、その後sklearnパッケージの運用を学び、まずそうしましょう.私は意外にも1回の完全な模型の構築さえしたことがなくて、悲しくて、、、
二、kaggleの上の入門例を引用して、Titanicのデータ学習はkaggleのウェブサイトの上で分かち合うコードで、私は基本的にそれを翻訳して、元のウェブサイト:https://www.kaggle.com/omarelgabry/titanic/a-journey-through-titanicpythonバージョン:anacondaをインストールしています.中にはいろいろなパッケージがありますが、seabornパッケージはありません.pip install seabornを使用してインストールしたり、conda install seabornを使用したりします.
1、大まかな考え方は明らかである:1変数ごとにデータ探索を行い、それを図として、それから変数を捨てられ、例えばEmbarked、変数が分割され、例えば性別Femaleとmale、変数が合併されるなどである.②train集合とtest集合は共に変数を取捨選択し,モデリングに便利である.③異なるモデルでtrain集合をフィッティングし、異なるモデルに採点し、最も採点の高いモデルを提出します.これはsklearnパッケージで実現する必要があります.多くのアルゴリズムを持っています.
2、私が一番難しいのは:1統計学の基礎があって、データに対して敏感で、データの分布に対して一定の感知能力があって、これは各種のデータの分布に対して非常に理解する必要があります.②データフィールド操作時にtrainとtestの2つの集合を同時に操作し、モデリング時の変数が正確になるようにする.③sklearnにおける各モデルとモデルの使用について一定の理解がある.
3、私が実习する时、データ処理はRで书いて、各変数の分布を见る前に、データに対してとても粗い処理を行って、例えば:集中度、欠失度、因子レベル、iv値、これらの変数はもし一定の硬い基准に达しないならば、スクリプトは自动的にこれらの変数を削除して、変数の分布を见る必要はありません.このデータ処理の標準化プロセスの一つとして、ぜひ覚えておきたいと思います!!!三、コード:1、データの準備とロード:1まずパッケージを導入する
②データをロードして表示する:
DataFrameでshapeプロパティは、データ・ボックスのサイズを表示し、3つの変数を削除したtrainのサイズは891です.×9のデータ・ボックス.
2、変数探索:①"Embarked"フィールド、翻訳すると「乗船タイプ」と呼ぶべきデータボックスがある列を引用するには2つの方法があり、1つは使用する.参照、1つは[]参照で、個人は1つ目に傾き、オブジェクト向けの参照方法に似ています.(R言語の場合はdataframe$Embarkedで参照)統計でtrainデータのEmbarked非空の値が得られ、count()関数で、Embarkedには2つの空の値があることがわかります
どのレコードが空の値であるかを表示できます.
4つの文に分割できます.
1つ目の書き方はもっと洗練されています!拡張すると、matplotlibのpyplotのfigureを使用して画像を定義する場合、座標軸を統一的に定義する名前にpltのプロパティを使用すると、次のようになります.
初歩的な統計とfactorplot関数の図面を経て、大体Embarkedという変数の分布状況に対して一定の理解があって、1つのfigの中に3つのサブ図があることを定義したので、次は3つのサブ図に対する充填です:
上の2行はそれぞれfigの前の2つの図を埋めて、axis 1はEmbarkedの3つの値を統計して、axis 2はSurvivedの値を統計します;次はembark_を構築しますpercデータボックスは、その3つの値の平均値を計算します.
pdを使用する.get_dummies()メソッドはEmbarkedという変数の指標を得,trainとtestがこの統計指標テーブルをそれぞれ右に接続すると,3つの新しい変数:’S’,’C’,’Q’が生成される.接続後の「S」変数の寄与度が小さすぎて、「S」という変数を削除し、「C」、「Q」を保持し、この2つの列の値が0または1のラベルであることが明らかになった.
元のEmabrekedという変数を削除します.
注意:削除するときは、trainとtestデータを同じように処理します.忘れちゃいけない、、、
①「Fare」フィールド:チケット価格変数が数値タイプの場合、describeメソッドで統計特性を表示できます.
テストデータにFare変数が空の値であることがわかり、fillna()メソッドで中央値を入力します.
データ処理変換、floatをintタイプに変換:
Fare変数に対応する生存と生存していない記録をそれぞれ得た(この参照はR言語のwhich()関数に似ている):
データ・ボックスのデータ・フレームに変換して、次のようにします.
注意:plot()を直接呼び出すのも簡単な描画方法で、matplotlibと同じです.pyplotではオブジェクト向けの図面と同様に、研究、、
③Age変数:年齢は対象に向かって図を描き、2つの図、それぞれtitleを設定する:
trainとtestの年齢の平均数、分散、空の値の数をそれぞれ得た.
ランダム製造count_nan_age_testの年齢を空の値に入力します(この方法は、numpyパッケージの反復可能なシーケンスを使用する必要があります):
上のコードを次のコードに置き換えてはいけません.ヒントはSeriesがhashできないことです.
年齢をintに変換するには、次の手順に従います.
図面:
引き続き作図して、seabornのFaceGrid()の方法、調べる必要があります、
④Cabin変数:船室番号
合計891個のレコードが、204個のレコードだけが空ではなく、文字型であるため、この変数は削除されたことがわかります.
⑤ParchとSibSp変数を統合する(この2つの変数の中国語の意味がよく分からない…)Parch変数とSibSp変数をFamliy変数に統合し、0と1のラベル変数として使用します.
seabornのcountplot()メソッドとbarplot()メソッド.
⑥統合変数Sex:ageが16歳を超えているかどうかを判断する関数を定義し、それを分類し、16歳未満は「child」、16歳以上は性別を保留する.
⑦Pclass変数:等級
⑧データ探索終了、trainとtestの変数を統一する:
三、モデルを構築する時sklearnパッケージを適用した:1論理回帰でX_をフィットするtrainとY_train、logregを使います.predict()関数によるX_予測testのデータは、最後にフィットした結果でモデルに点数をつけます!
②ランダム森林:
四、関連分析(分からない!!):
五、csvを生成し、ファイルを提出する:まず一つのデータ枠DataFrameを構築する
さらにcsvファイルに書きます.
ラベルを付けた後の正確率はあなたの順位の高低の根拠で、もし変数の制御がよくて、無効な変数が少ないならば、あなたの得点率はきっと高いに違いありません.もしあなたがモデルを創立する時無効な変数が多いならば、それはフィッティングした結果はきっと理想的ではありません.同時に、あなたもいろいろな異なるモデルを比較する必要があります.モデルを構築したscoreの最も高いモデルコミットを選択します.
二、kaggleの上の入門例を引用して、Titanicのデータ学習はkaggleのウェブサイトの上で分かち合うコードで、私は基本的にそれを翻訳して、元のウェブサイト:https://www.kaggle.com/omarelgabry/titanic/a-journey-through-titanicpythonバージョン:anacondaをインストールしています.中にはいろいろなパッケージがありますが、seabornパッケージはありません.pip install seabornを使用してインストールしたり、conda install seabornを使用したりします.
1、大まかな考え方は明らかである:1変数ごとにデータ探索を行い、それを図として、それから変数を捨てられ、例えばEmbarked、変数が分割され、例えば性別Femaleとmale、変数が合併されるなどである.②train集合とtest集合は共に変数を取捨選択し,モデリングに便利である.③異なるモデルでtrain集合をフィッティングし、異なるモデルに採点し、最も採点の高いモデルを提出します.これはsklearnパッケージで実現する必要があります.多くのアルゴリズムを持っています.
2、私が一番難しいのは:1統計学の基礎があって、データに対して敏感で、データの分布に対して一定の感知能力があって、これは各種のデータの分布に対して非常に理解する必要があります.②データフィールド操作時にtrainとtestの2つの集合を同時に操作し、モデリング時の変数が正確になるようにする.③sklearnにおける各モデルとモデルの使用について一定の理解がある.
3、私が実习する时、データ処理はRで书いて、各変数の分布を见る前に、データに対してとても粗い処理を行って、例えば:集中度、欠失度、因子レベル、iv値、これらの変数はもし一定の硬い基准に达しないならば、スクリプトは自动的にこれらの変数を削除して、変数の分布を见る必要はありません.このデータ処理の標準化プロセスの一つとして、ぜひ覚えておきたいと思います!!!三、コード:1、データの準備とロード:1まずパッケージを導入する
from pandas import DataFrame
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble importRandomForestClassifier
pandas DataFrame ,numpy ,matplotlib ,seaborn , sklearn ,sklearn 、、
②データをロードして表示する:
titanic_df=pd.read_csv('C:\\Datemining\\tatannic\\train.csv', dtype={"Age": np.float64}, )
test_df=pd.read_csv('C:\\Datemining\\tatannic\\test.csv', dtype={"Age": np.float64}, )
titanic_df.head()
titanic_df.info()
print("----------------------------")
test_df.info()
titanic_df = titanic_df.drop(['PassengerId','Name','Ticket'], axis=1)
test_df = test_df.drop(['Name','Ticket'], axis=1)
pandas.read_csv() csv train test (R read.csv()), DataFrame, DataFrame.head() , DataFrame.info() 。
train 'PassengerId','Name','Ticket' ,test 'Name','Ticket' 。
train test :
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId 891 non-null int64
Survived 891 non-null int64
Pclass 891 non-null int64
Name 891 non-null object
Sex 891 non-null object
Age 714 non-null float64
SibSp 891 non-null int64
Parch 891 non-null int64
Ticket 891 non-null object
Fare 891 non-null float64
Cabin 204 non-null object
Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 66.2+ KB
----------------------------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 418 entries, 0 to 417
Data columns (total 11 columns):
PassengerId 418 non-null int64
Pclass 418 non-null int64
Name 418 non-null object
Sex 418 non-null object
Age 332 non-null float64
SibSp 418 non-null int64
Parch 418 non-null int64
Ticket 418 non-null object
Fare 417 non-null float64
Cabin 91 non-null object
Embarked 418 non-null object
dtypes: float64(2), int64(4), object(5)
memory usage: 27.8+ KB
DataFrameでshapeプロパティは、データ・ボックスのサイズを表示し、3つの変数を削除したtrainのサイズは891です.×9のデータ・ボックス.
titanic_df.shape
(891, 9)
2、変数探索:①"Embarked"フィールド、翻訳すると「乗船タイプ」と呼ぶべきデータボックスがある列を引用するには2つの方法があり、1つは使用する.参照、1つは[]参照で、個人は1つ目に傾き、オブジェクト向けの参照方法に似ています.(R言語の場合はdataframe$Embarkedで参照)統計でtrainデータのEmbarked非空の値が得られ、count()関数で、Embarkedには2つの空の値があることがわかります
titanic_df.Embarked.count()
Out[16]: 889
:
titanic_df['Embarked'].count()
Out[19]: 889
どのレコードが空の値であるかを表示できます.
titanic_df.Embarked[titanic_df.Embarked.isnull()]
Out[8]:
61 NaN
829 NaN
Name: Embarked, dtype: object
isnull()
はbooleanのSeriesシーケンスの値を返し、参照時に返される値はtureの値(R言語ではtitanic_df$Embarked[which(titanic_df$Embarked==NA)]
と表記され、61と829のレコードが空で、2つだけが空であることがわかります.groupbyメソッドで大まかに統計すると、Embarkedの値は次のようになります.titanic_df.groupby('Embarked').Survived.count()
>Out[13]:
Embarked
C 168
Q 77
S 646
Name: Survived, dtype: int64
Embarked 3 , , 'S', 。 'S'
( int , (<20%) 、 )
titanic_df["Embarked"] = titanic_df["Embarked"].fillna("S")
Embarked , , :
sns.factorplot('Embarked','Survived',data=titanic_df,size=3,aspect=3)
:
![ kind ](http://img.blog.csdn.net/20160706083315745)
seaborn factorplot , factorplot() kind :violin、strip、bar、box。 , kind='violin' , !
fig axis1,axis2,axis3,
fig, (axis1,axis2,axis3) = plt.subplots(1,3,figsize=(15,5))
4つの文に分割できます.
fig=plt.figure(figsize=(15,5))
axis1=fig.add_subplot(1,3,1)
axis2=fig.add_subplot(1,3,2)
axis2=fig.add_subplot(1,3,3)
1つ目の書き方はもっと洗練されています!拡張すると、matplotlibのpyplotのfigureを使用して画像を定義する場合、座標軸を統一的に定義する名前にpltのプロパティを使用すると、次のようになります.
import matplotlib.pyplot as plt
fig=plt.figure(figsize=(10,5))
fig.title('testdata')
fig.xlabel('age')
fig.ylabel('survived')
plt.show()
title:
axis1=fig.add_subplot(131)
axis1.set_xlabel('age')
axis1.set_ylabel('survived')
temp1.plot()
temp1 DataFrame, plot() axis1
初歩的な統計とfactorplot関数の図面を経て、大体Embarkedという変数の分布状況に対して一定の理解があって、1つのfigの中に3つのサブ図があることを定義したので、次は3つのサブ図に対する充填です:
sns.countplot(x='Embarked', data=titanic_df, ax=axis1)
sns.countplot(x='Survived', hue="Embarked", data=titanic_df, order=[1,0], ax=axis2)
上の2行はそれぞれfigの前の2つの図を埋めて、axis 1はEmbarkedの3つの値を統計して、axis 2はSurvivedの値を統計します;次はembark_を構築しますpercデータボックスは、その3つの値の平均値を計算します.
embark_perc = titanic_df[['Embarked','Survived"]].groupby(['Embarked'],as_index=False).mean()
sns.barplot(x='Embarked', y='Survived', data=embark_perc,order=['S','C','Q'],ax=axis3)
titanic_df[['Embarked','Survived"]].groupby(['Embarked']
はsql文のgroupby関数に相当し、mean()関数はそれに対して平均値を計算した後、データボックスDataFrameを生成する.(図はアップロードしません)pdを使用する.get_dummies()メソッドはEmbarkedという変数の指標を得,trainとtestがこの統計指標テーブルをそれぞれ右に接続すると,3つの新しい変数:’S’,’C’,’Q’が生成される.接続後の「S」変数の寄与度が小さすぎて、「S」という変数を削除し、「C」、「Q」を保持し、この2つの列の値が0または1のラベルであることが明らかになった.
embark_dummies_titanic = pd.get_dummies(titanic_df['Embarked'])
embark_dummies_titanic.drop(['S'], axis=1, inplace=True) embark_dummies_test = pd.get_dummies(test_df['Embarked']) embark_dummies_test.drop(['S'], axis=1, inplace=True) titanic_df = titanic_df.join(embark_dummies_titanic) test_df = test_df.join(embark_dummies_test) titanic_df.drop(['Embarked'], axis=1,inplace=True) test_df.drop(['Embarked'], axis=1,inplace=True)
元のEmabrekedという変数を削除します.
titanic_df.drop(['Embarked'], axis=1,inplace=True) test_df.drop(['Embarked'], axis=1,inplace=True)
注意:削除するときは、trainとtestデータを同じように処理します.忘れちゃいけない、、、
①「Fare」フィールド:チケット価格変数が数値タイプの場合、describeメソッドで統計特性を表示できます.
test_df.Fare.describe()
>Out[7]:
count 417.000000
mean 35.627188
std 55.907576
min 0.000000
25% 7.895800
50% 14.454200
75% 31.500000
max 512.329200
Name: Fare, dtype: float64
test_df.shape
>Out[5]: (418, 10)
test_df.Fare.count()
>Out[6]: 417
テストデータにFare変数が空の値であることがわかり、fillna()メソッドで中央値を入力します.
test_df["Fare"].fillna(test_df["Fare"].median(), inplace=True)
データ処理変換、floatをintタイプに変換:
titanic_df['Fare'] = titanic_df['Fare'].astype(int)
test_df['Fare'] = test_df['Fare'].astype(int)
Fare変数に対応する生存と生存していない記録をそれぞれ得た(この参照はR言語のwhich()関数に似ている):
fare_not_survived = titanic_df["Fare"][titanic_df["Survived"] == 0]
fare_survived = titanic_df["Fare"][titanic_df["Survived"] == 1]
データ・ボックスのデータ・フレームに変換して、次のようにします.
avgerage_fare = DataFrame([fare_not_survived.mean(), fare_survived.mean()])
std_fare = DataFrame([fare_not_survived.std(), fare_survived.std()])
:
titanic_df['Fare'].plot(kind='hist', figsize=(10,3),bins=100, xlim=(0,50))
注意:plot()を直接呼び出すのも簡単な描画方法で、matplotlibと同じです.pyplotではオブジェクト向けの図面と同様に、研究、、
avgerage_fare.index.names = std_fare.index.names = ["Survived"]
avgerage_fare.plot(yerr=std_fare,kind='bar',legend=False)
③Age変数:年齢は対象に向かって図を描き、2つの図、それぞれtitleを設定する:
fig, (axis1,axis2) = plt.subplots(1,2,figsize=(15,4))
axis1.set_title('Original Age values - Titanic')
axis2.set_title('New Age values - Titanic')
trainとtestの年齢の平均数、分散、空の値の数をそれぞれ得た.
average_age_titanic = titanic_df["Age"].mean()
std_age_titanic = titanic_df["Age"].std()
count_nan_age_titanic = titanic_df["Age"].isnull().sum()
average_age_test = test_df["Age"].mean()
std_age_test = test_df["Age"].std()
count_nan_age_test = test_df["Age"].isnull().sum()
ランダム製造count_nan_age_testの年齢を空の値に入力します(この方法は、numpyパッケージの反復可能なシーケンスを使用する必要があります):
rand_1 = np.random.randint(average_age_titanic - std_age_titanic, average_age_titanic + std_age_titanic, size = count_nan_age_titanic)
rand_2 = np.random.randint(average_age_test - std_age_test, average_age_test + std_age_test, size = count_nan_age_test)
titanic_df["Age"][np.isnan(titanic_df["Age"])] = rand_1
test_df["Age"][np.isnan(test_df["Age"])] = rand_2
上のコードを次のコードに置き換えてはいけません.ヒントはSeriesがhashできないことです.
rand_1 = Series(np.random.randint(average_age_titanic - std_age_titanic, average_age_titanic + std_age_titanic, size = count_nan_age_titanic))
rand_2 = Series(np.random.randint(average_age_test - std_age_test, average_age_test + std_age_test, size = count_nan_age_test))
titanic_df["Age"][titanic_df["Age"].isnull()]=rand_1
test_df["Age"][test_df["Age"].isnull]=rand_2
年齢をintに変換するには、次の手順に従います.
titanic_df['Age'] = titanic_df['Age'].astype(int)
test_df['Age'] = test_df['Age'].astype(int)
図面:
titanic_df['Age'].hist(bins=70, ax=axis1)
titanic_df['Age'].hist(bins=70, ax=axis2)
引き続き作図して、seabornのFaceGrid()の方法、調べる必要があります、
facet = sns.FacetGrid(titanic_df, hue="Survived",aspect=4)
facet.map(sns.kdeplot,'Age',shade= True)
facet.set(xlim=(0, titanic_df['Age'].max()))
facet.add_legend()
:
fig, axis1 = plt.subplots(1,1,figsize=(18,4))
average_age = titanic_df[["Age", "Survived"]].groupby(['Age'],as_index=False).mean()
sns.barplot(x='Age', y='Survived', data=average_age)
④Cabin変数:船室番号
titanic_df.shape
>Out[4]: (891, 12)
titanic_df.Cabin.count()
>Out[5]: 204
titanic_df.drop("Cabin",axis=1,inplace=True)
test_df.drop("Cabin",axis=1,inplace=True)
合計891個のレコードが、204個のレコードだけが空ではなく、文字型であるため、この変数は削除されたことがわかります.
⑤ParchとSibSp変数を統合する(この2つの変数の中国語の意味がよく分からない…)Parch変数とSibSp変数をFamliy変数に統合し、0と1のラベル変数として使用します.
titanic_df.Parch.describe()
>Out[15]:
count 891.000000
mean 0.381594
std 0.806057
min 0.000000
25% 0.000000
50% 0.000000
75% 0.000000
max 6.000000
Name: Parch, dtype: float64
titanic_df.Parch[titanic_df.Parch!=0].count()
>Out[14]: 213
titanic_df.SibSp[titanic_df.SibSp!=0].count()
>Out[17]: 283
, 0 , :
titanic_df['Family'] = titanic_df["Parch"] + titanic_df["SibSp"]
titanic_df['Family'].loc[titanic_df['Family'] > 0] = 1
titanic_df['Family'].loc[titanic_df['Family'] == 0] = 0
test_df['Family'] = test_df["Parch"] + test_df["SibSp"]
test_df['Family'].loc[test_df['Family'] > 0] = 1
test_df['Family'].loc[test_df['Family'] == 0] = 0
:
titanic_df = titanic_df.drop(['SibSp','Parch'], axis=1)
test_df = test_df.drop(['SibSp','Parch'], axis=1)
:
fig, (axis1,axis2) = plt.subplots(1,2,sharex=True,figsize=(10,5))
sns.countplot(x='Family', data=titanic_df, order=[1,0], ax=axis1)
:
family_perc = titanic_df[["Family", "Survived"]].groupby(['Family'],as_index=False).mean()
sns.barplot(x='Family', y='Survived', data=family_perc, order=[1,0], ax=axis2)
axis1.set_xticklabels(["With Family","Alone"], rotation=0)
seabornのcountplot()メソッドとbarplot()メソッド.
⑥統合変数Sex:ageが16歳を超えているかどうかを判断する関数を定義し、それを分類し、16歳未満は「child」、16歳以上は性別を保留する.
def get_person(passenger):
age,sex = passenger
return 'child' if age < 16 else sex
Person:, apply() train test ( R apply):
titanic_df['Person'] = titanic_df[['Age','Sex']].apply(get_person,axis=1)
test_df['Person'] = test_df[['Age','Sex']].apply(get_person,axis=1)
Sex
titanic_df.drop(['Sex'],axis=1,inplace=True)
test_df.drop(['Sex'],axis=1,inplace=True)
, columns 'Child','Female','Male'
person_dummies_titanic = pd.get_dummies(titanic_df['Person'])
person_dummies_titanic.columns = ['Child','Female','Male']
person_dummies_titanic.drop(['Male'], axis=1, inplace=True)
person_dummies_test = pd.get_dummies(test_df['Person'])
person_dummies_test.columns = ['Child','Female','Male']
person_dummies_test.drop(['Male'], axis=1, inplace=True)
titanic_df = titanic_df.join(person_dummies_titanic)
test_df = test_df.join(person_dummies_test)
, :
fig, (axis1,axis2) = plt.subplots(1,2,figsize=(10,5))
sns.countplot(x='Person', data=titanic_df, ax=axis1)
person_perc = titanic_df[["Person", "Survived"]].groupby(['Person'],as_index=False).mean()
sns.barplot(x='Person', y='Survived', data=person_perc, ax=axis2, order=['male','female','child'])
, :
titanic_df.drop(['Person'],axis=1,inplace=True)
test_df.drop(['Person'],axis=1,inplace=True)
⑦Pclass変数:等級
sns.factorplot('Pclass','Survived',order=[1,2,3], data=titanic_df,size=5)
# create dummy variables for Pclass column, & drop 3rd class as it has the lowest average of survived passengers Pclass , train test class_3 , ! pclass_dummies_titanic = pd.get_dummies(titanic_df['Pclass']) pclass_dummies_titanic.columns = ['Class_1','Class_2','Class_3'] pclass_dummies_titanic.drop(['Class_3'], axis=1, inplace=True) pclass_dummies_test = pd.get_dummies(test_df['Pclass']) pclass_dummies_test.columns = ['Class_1','Class_2','Class_3'] pclass_dummies_test.drop(['Class_3'], axis=1, inplace=True) titanic_df.drop(['Pclass'],axis=1,inplace=True) test_df.drop(['Pclass'],axis=1,inplace=True) titanic_df = titanic_df.join(pclass_dummies_titanic) test_df = test_df.join(pclass_dummies_test)
⑧データ探索終了、trainとtestの変数を統一する:
X_train = titanic_df.drop("Survived",axis=1)
Y_train = titanic_df["Survived"]
X_test = test_df.drop("PassengerId",axis=1).copy()
三、モデルを構築する時sklearnパッケージを適用した:1論理回帰でX_をフィットするtrainとY_train、logregを使います.predict()関数によるX_予測testのデータは、最後にフィットした結果でモデルに点数をつけます!
logreg = LogisticRegression()
logreg.fit(X_train, Y_train)
Y_pred = logreg.predict(X_test)
logreg.score(X_train, Y_train)
②ランダム森林:
random_forest = RandomForestClassifier(n_estimators=100)
random_forest.fit(X_train, Y_train)
Y_pred = random_forest.predict(X_test)
random_forest.score(X_train, Y_train)
四、関連分析(分からない!!):
coeff_df = DataFrame(titanic_df.columns.delete(0))
coeff_df.columns = ['Features']
coeff_df["Coefficient Estimate"] = pd.Series(logreg.coef_[0])
五、csvを生成し、ファイルを提出する:まず一つのデータ枠DataFrameを構築する
submission = pd.DataFrame({
"PassengerId": test_df["PassengerId"],
"Survived": Y_pred
})
さらにcsvファイルに書きます.
submission.to_csv('titanic.csv', index=False)
ラベルを付けた後の正確率はあなたの順位の高低の根拠で、もし変数の制御がよくて、無効な変数が少ないならば、あなたの得点率はきっと高いに違いありません.もしあなたがモデルを創立する時無効な変数が多いならば、それはフィッティングした結果はきっと理想的ではありません.同時に、あなたもいろいろな異なるモデルを比較する必要があります.モデルを構築したscoreの最も高いモデルコミットを選択します.