分析手法とデータの対
WebクライアントがSSLとTLSに対応しているかどうか
>エラー
WebAPIの呼び出しがうまくいかず「ハマった」話 - 星と月と太陽と
ここで言われている、
リモート パーティがトランスポート ストリームを終了したため、認証に失敗しました。
これが出ました。解消するには、
ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol Or SecurityProtocolType.Tls12
最初のブログで言われているのを参照して、わたしのプロジェクトではSystem.Net.WebClient()をインスタンシングして使うので、そのWebClientインスタンスについて、プロパティを
System.Net.ServicePointManager.SecurityProtocol = System.Net.ServicePointManager.SecurityProtocol Or System.Net.SecurityProtocolType.Tls12
として直りました。インスタンスがデフォルトの設定ではTLS1.2に対応していない(TLS1.2での通信をすることを想定せず、当該企画によって暗号化されたデータを読めない)ということでしょうか。
>SSLとTLSとは
SSLとTLSとは?意外に知らないSSLとTLSの違い(簡単編) - 常時SSl Lab
SSL(Secure Socket Layer)は、インターネット上でやりとりされるデータの「盗聴」「改ざん」「なりすまし」を防止するための暗号化プロトコル(通信方法)です。
現在、通称としてSSLと呼ばれているものは、SSLに変わる新しい仕組みの『TLS(Transport Layer Security)』というものになっています。
httpとhttpsの違いとは?知らないと恥ずかしいWEBセキュリティの基本 - CyberSecurity.com
httpはTLSなし、httpsはTLSありの、サーバ側の運用ということのようです。ちなみに上記修正前のWebClientで、アクセスできたサイトをみると、httpでした。Httpsのサイトへのアクセスの際にはクライアント側もtls1.2が必要ということのようです。普段われわれがWebブラウジングに使っているブラウザもTLS1.2に対応しているのでしょうか。私が普段使っているFireFoxだと、
検索窓にabout:config
security.tls.version.max、minのところを確認、で分かるみたいです。
線形回帰によるワインの分析
>出典
scikit-learn で線形回帰 (単回帰分析・重回帰分析) - Python でデータサイエンス
>データについて
今回は、UC バークレー大学の UCI Machine Leaning Repository にて公開されている、「Wine Quality Data Set (ワインの品質)」の赤ワインのデータセットを利用します。
記事にあるデータをあけてみると、
ここが共通のようです。我々がデータのヘッダと呼んでいる部分は英語ではAttributeというみたいです。
>データの読み込み方
読み込みたいcsvの場所を変えずにプログラムの方にデータを見に行かせるには、
【Python】pandasで指定したフォルダのcsvファイルを開く - Qiita
これを組み合わせると、
>単回帰分析
図が描けないのは、それ用のパッケージのインストールをしていないからのようです。
Mac上のmatplotlibでグラフ描画できないときの対処法 - Qiita
リンク元の画像を見るに、目的変数「アルコール」(y)と説明変数「濃度」(x)の関係性をy = ax + bという学生の頃よく見た直線の式で表しているようです。散布図の上にその直線が引かれていて、プロットされたそれぞれの点がワインの各個体を表していて、それらの点の最大公約数的なところを通る直線のようです。だから単回帰分析というのはそのように、二次元の散布図にばらまかれた各個体のデータの、最大公約数的なところを通る直線を引いてその直線の延長線上の値を予測する、という方法論のようです。重回帰分析というのはそれの発展形で、説明変数が100個あれば101次元の散布図にばらまかれたデータの最大公約数を通る、100次元の何かを算出する方法論だということでしょう。しかしそういうことになると、直線は負の傾きを持っているから、濃度が上がればアルコールがさがる?あまりぴんと来ない結果です。普通ワインの濃度といえばアルコールの濃度だと思うからでしょう。然るにここで言う濃度は何か別のものの濃度なのでしょう。ワインのデータを使うとなんかカッコイイのですが、実行結果が直感的にならないというのは難点だとおもいます。
ちなみにaが回帰係数、bが切片、決定係数というのはこの式が予想する値がどのくらい信頼できるかの値で、0(→信頼できない)~1(→信頼できる)の値となるそうです。
>重回帰分析
全部の要素で品質を説明するわけですから単回帰分析より精度が高い予想ができそうです。
>正規化+重回帰分析
正規化する前と正規化した後で説明変数の順番が入れ替わるのはなぜでしょう。正規化とは何か。各説明変数がどの程度目的変数に影響しているかを確認するためにそうするという記述があります。目的変数が品質スコアというよくわからない変数なので、この変数と高いシンクロ率で推移している値が、たとえ振れ幅は小さくても高い影響力を持っているということは言えます。そういうことを明確にする手法なのだと推測できます。
【パイソン機械学習】決定木のコード解析
>出典
scikit-learn で決定木分析 (CART 法) - Python でデータサイエンス
>コード解析
>>①データの読み込み
前回同様Load_xxでデータを読み込んでいます。読み込んだデータをiris.data、iris.targetで出力することもできるみたいです。実際手元の開発環境でやってみると、こういうことになりました。
データの内容はこういう構造になっていると推測できます。
>>②分類器にデータ(説明変数と目的変数)を渡す
これで先述のデータを学習したことになったのでしょうか。
>>③学習済みの分類器に説明変数のみを渡して分類してもらう
学習に使った説明変数をそのまま使っています。もしこれが新しい151番目の個体が入ってきたとしたら、という想定で手元の環境でやってみます。学習に使った説明変数の1番目のデータと同じパラメータのデータだとしたら、0に分類されるはずです。その要領で0に分類されるべき個体、1に分類されるべき個体、2に分類されるべき個体の3個体を含んだ配列を作って、それをこの分類器に渡してみましょう。二次元配列の作り方は出典下記です。
【Python】二次元配列を自在に操れ。【初期化・参照・抽出・計算・転置】 - Qiita
こう作りました。
分類器に入れてみると、
分類できていることがわかります。
>>④決定木を可視化
やろうとしましたが、pydotplusがないからムリという趣旨と思われるエラーメッセージが出ました。