1.はじめに
散布図は、2つの変数の関係を探索する便利な方法ですが、それはまたshortcomeを持っている:私たちは私たちの目でそれの傾向を推測する必要があります。私たちは、散布図にトレンドラインを追加することができれば、それは我々の意見をより明確かつ強力になります。このステップでは、私たち自身が何が起こっているかを整理して、読者だけでなく、データアナリストだけでなく、利益になります。
ただし、matplotlibのは、引数を持たないまたは内蔵そうする方法。私たちは私たち自身でトレンドラインを確認する必要があります。回帰(トレンドライン)を行うためのPythonの生態系ではより混雑しています。numpyの、statsmodels、sklearnにscipyのダウンロード、多くのライブラリからのライブラリは、同じことを行うには独自の方法を持っています。私は、彼らがユーザーのために、同じまたは近いインタフェースを持って望むが、それはそうではありません。そこで、この記事では、我々は、我々はできる限り簡単にトレンドラインを追加しようとします。その後、我々は他のライブラリが同じことを行う方法でglimpsを持つことになります。
この記事はまた、Pythonでデータ回帰を行う方法の標準的なプロセスであるので、一つの簡単なメモ開始する前に、トレンドラインは、実際に散乱データへの回帰です。
2. [データ
我々は2つの古典的なデータセット「tips.csv」と例のように「mpg.csv」を使用します。
一つの簡単な方法は、seabornのエージェントbulitインのデータセット、ヒントやMPGを使用している内部に既にあります。
SNSのようなインポートseaborn ヒント= sns.load_dataset( "チップ") MPG = sns.load_dataset( "MPG")
ここでは、彼らは最初の5行、どのように見えるかです:
私たちは、それがどのように見えるかを確認するには、通常の散布図を描くことができます。
PLTのようmatplotlibのインポートpyplotから 図、AX1 = plt.subplots(1、1、figsize =(8,6)) ax1.scatter(TIPS [ 'total_bill']、チップ[ 'チップ'])
図、AX1 = plt.subplots(1、1、figsize =(8,6)) ax1.scatter(MPG [ '馬力']、MPG [ 'MPG'])
3. Seaborn
我々は前に述べたように、matplotlibのには組み込まれていない-でいる方法トレンドラインを追加します。しかしseabornは「regplot」という名前の1、(回帰プロットの短い)を持っています。
これは完全にさえ回帰を行う方法を知っずに問題を解決することができます。
図、AX1 = plt.subplots(1、1、figsize =(8,6)) 散布= sns.regplot(TIPS [ 'total_bill']、チップ[ 'チップ'])
MPGデータが示す曲線の傾向は、我々は以下のように引数の順序= 2を使用します。
#用いて引数の順序= 図、AX1 = plt.subplots(1、1、figsize =(8,6)) 散布= sns.regplot(MPG [ '馬力']、MPG [ 'MPG']、順序= 2)
私たちは、seaborn以内にいくつかのカスタマイズを行うことができます。それはmatplotlibので座標それほど明白でもそうではないのですが、それでも知っておきたいこと。
#我々はline_kwsと線の色&散乱色を指定することができ 、図、AX1 = plt.subplots(1、1、figsize =(8,6)) 散布= sns.regplot(MPG [ '馬力']、MPG [ 'MPG'] 、オーダー= 2、 line_kws = { '色': 'darkorange'}、scatter_kws = { '色': 'ピンク'})
これは実際に物語の終わりになることができます。私たちは、まともな出力および散布図にトレンドラインを追加する簡単な十分な方法を持っています。
あなたは私と一緒に耐えることができるか、後で戻ってくるしたい場合、我々は話題に詳細に行くさせていただきます。
4. numpyの
NPとしてnumpyのインポート
トレンドラインを追加することの第二の最も簡単な方法は、numpyのライブラリを使用しています。これはnumpyのもstatsmodels、scipyのダウンロードやsklearnを使用せずに、どのように強力な私たちを驚かせることがあります。
seaborn方法では、我々は、トレンドラインの関数である、またはそれは、データをどのように適合するか何が良い見当がつかない。
numpyのを使用すると、同じことを別の方法であるが、我々はトレンドラインの機能があるものを手に入れることができます。我々が求められている場合は少なくとも、我々はトレンドライン機能が何であるかを伝えることができます。
構築された機能「np.poly1dは()」我々のユーザーに利便性がある、直接プリントアウトすることができます。
paramsは= np.polyfit(TIPS [ 'total_bill']、チップ[ 'チップ']、1)#1オーダー 機能= np.poly1d(paramsは) 印刷(関数) #出力 #0.105 X + 0.9203
我々は上記の構築機能を使用して、我々はmatplotlibの中にトレンドを描くことができます。
図、AX1 = plt.subplots(1、1、figsize =(8,6)) ax1.scatter(TIPS [ 'total_bill']、チップ[ 'チップ']) X = np.linspace(0、50) AX1。プロット(X、関数(x)は、色= '赤'、線幅= 2)
同様に、私たちはMPGデータセットに同じことをするでしょう。
paramsは= np.polyfit(MPG [ '馬力']、MPG [ 'MPG']、2)#2の注文が 機能= np.poly1d(paramsは) 印刷(関数) #出力 #2 #0.001231 X - 0.4662 X + 56.9
図、AX1 = plt.subplots(1、1、figsize =(8,6)) ax1.scatter(MPG [ '馬力']、MPG [ 'MPG']) はx = np.linspace(50、225) AX1。プロット(X、関数(x)は、色= R ''、線幅= 2)
私は、この方法も簡単で十分だと思います。ここでは2つの重要な機能は非常によく、機能の特に出力が設計されており、我々は描画のためにそれを使用することができます。
5.状態モデル
前節では、トレンドラインの発現(機能)を取得する方法について話しました。しかし、まだ我々は、トレーニングがどのように良いか悪いかわかりません。
通常、我々はINFOMATIONのこの部分を知っている必要がありますが、私たちは、この部分に行かなければならない場合は、statsmodelを使用することは良いアイデアですしないでください。
statsmodels.formula.apiインポートOLSから 私たち自身によってヒント= tips.dropna()#1 dropnaまたはそれがエラーを取得することができる 曲線=オール( 'チップ〜total_bill'、ヒント)#構築式y〜X 曲線= curve.fit() 印刷(curve.params) #出力 #インターセプト0.920270 #total_bill 0.105025 #DTYPE:のfloat64
これらのINFOMATIONを使用して、私たちは私たち自身で機能を構築し、トレンドラインを描くことができます。
#私たちは、私たちが望む場合、この関数を構築するために)(np.poly1d使用することができ ます。#しかし、ここで私たちは一般的な方法を与える デフ(x)はF: リターンcurve.params [1] * X + curve.params [0] イチジク、AX1を= plt.subplots(1、1、figsize =(8,6)) ax1.scatter(TIPS [ 'total_bill']、チップ[ 'チップ']) X = np.linspace(0、50) ax1.plot(X 、f(x)が、色= '赤'、線幅= 2)
いいえ驚きは、それは以前と同じではありませんが、良い部分は、我々は以下のような曲線の概要を持つことができます。
私たちは、回帰を行うと、パラメータが良いか悪いかは十分である。図にしてみてくださいしている場合は、このINFOMATIONテーブルは、生命の救世主することができます。
curve.summary()
今、私たちはMPGデータセットに同じことをするでしょう。私はこのプロセスを実行しようとしましたときに、私は、回帰が2桁であれば、私は自分でvaribaleを行う必要がありました。私は私が更新する新しいINFOMATIONを持っている場合、たぶん私は、間違っています。
MPG = mpg.dropna() #のmpg散布2桁のトレンドである、 私たちは私たち自身でそれを行う必要があり、このstatsmodel方法で# MPG [ 'horsepower2'] = MPG [ '馬力'] ** 2 私たち自身によって#の後退 #構築表現Y〜X ** 2 + X 曲線=( 'MPG〜horsepower2 +馬力'、MPG)OLS 曲線= curve.fit()は curve.params #出力を #Intercept 56.900100 #horsepower2 0.001231 #horsepower -0.466190 #dtype:のfloat64
#我々の回帰式 DEF(X)F: 戻りcurve.params [1] * X ** 2 + curve.params [2] * X + curve.params [0] 図、AX1 = plt.subplots(1、1、 figsize =(8,6)) ax1.scatter(MPG [ '馬力']、MPG [ 'MPG']) はx = np.linspace(50、225) ax1.plot(x、f(x)が、色=」 R」は、線幅= 2)
curve.summary()
6.まとめ
- 我々は何も気にしない場合は、単にトレンドラインを追加するseabronのregplot()を使用します。
- 我々はまた、トレンドの表現をしたい場合は、我々は)ADN ploy1d()(numpyののployfitを使用することができます。ploy1dのUseage()このメソッドを超えています。他のライブラリによって生成パラメータを使用して式を作成するために使用することができます。
- 私たちはフィットネスやフォーマル回帰を行うための完全なINFOMATIONを取得したい場合は、statsmodelは、良好な出力テーブルを持っています。
我々はここで停止します。だけでなく、記事が長すぎるすでにですが、また、私は完全なscipyのダウンロード&sklearnの理解を持っていないので。
今日は私たちの話題を願っ良く説明し、誰もが使用するために十分に簡単です。私はどの部分で間違っている場合は、私に知らせてください。