データの標準化は機械学習の前処理としてとても重要です。疎行列型データ構造は、スパースなデータを表現するためにはとても適しています。残念ながら、普通に疎行列型を標準化しようとすると、疎行列性が失せます。n-gramは自然言語処理でよく使われる方法です。以下のような関数を作りたいとします。n=3ならtrigramという言い方があります。scikit-learnのv0.22で、混同行列をプロットするための便利関数であるsklearn.metrics.plot_confusion_matrixが追加されました。使いやすそうなので試してみます。リファレンスはこちらです。ローデータ(生データ)を取り込むと、年月日が独立して入っている感じの嫌なデータになっていることがあります。関数の中で関数の外の変数を操作するようなコードを書いていると、たまに下記のようなエラーが出ます。k近傍法には、近傍点の重み付けをどうするかで複数のやり方が考えられます。普通のk近傍点では予測対象の点のkつの近傍点を取ってきて、そのクラスを単純に多数決します。既存の関数のwrapperを作るときなど、可変長キーワード引数を使いたいときがあります。これは通常のキーワード引数と併用できますが、稀に問題になることがあります。定義するときは割と単純で、問題も少ないです。信頼区間付きの棒グラフはよく見かけます。複数グループの差が優位かどうかという議論に向いているからです。対話モードだとアンダースコアの変数が自動的にできています。最後に評価した結果が入るようです。これはチュートリアルに書いてあったのですが、他の入門記事で触れられているのを見た記憶はまったくありません。信頼区間というとなんとなく棒グラフにつけるものという印象がありますが、折れ線グラフでも計算すること自体はたやすくて、しかもけっこうかっこいいグラフになります。表題の通りの話をたまに聞きます。「ランダムフォレストは内部で変数選択を行う。変数選択は必要ない」という主張です。Tips注意:IterativeImputerは本記事の執筆時点(2019年11月)で実験的な実装とされており、最新の仕様等はこの記事の内容と異なる可能性があります。常にstable版の公式のドキュメントを確認してください。欠損値補完(nanの処理)はだいたいpandasでやる人が多いですが、最近のscikit-learnはこの辺りの前処理に対するサポートも充実してきているので、平均値で補完する程度であればかえってscikit-learnでやった方が楽かもしれません。mecab-pythonで形態素解析を行って何らかの処理をするとき、特定の品詞だけ取り出したいということがよくあります。いう目的で書かれたコードとして、よくこんなものを見たりすると思います。matplotlibのboxplotを使うと簡単に箱ひげ図が描けます。デフォルト設定では外れ値が黒い円で表示されます。どんなデータでも、サンプル数が多いと一定数の外れ値は出てしまいます。matplotlibではよく一つの図の中に複数のグラフを描きます。すると全体に共通してタイトルを付けたくなるのですが、普通にやろうとしても個別のAxesに対して呼んでしまいがちです。図全体に対してタイトルを付けるには、suptitleを使います。matplotlibでsubplotsを使って適当にグラフを並べるのはよくある処理だと思います。きれいに長方形で配置できないときもあります。「pandasのget_dummiesでダミー変数が作れるぜ」という記事がとてもたくさんあって初心者を混乱させているのですが、これは「データ分析」には使えても「機械学習」には向きません。一般論としてはその通りなのですが、Pythonではそうしないメカニズムも用意されています。__new__を使えば割となんでもできます。自然言語処理などで大規模疎行列を扱うことがあります。一昔前はNLPといえばこれでした(最近は低次元密行列で表現することのほうが多いですが)。複数のiterable(リストとか)を結合させてループさせたいときがあります。collectionsnamedtupleは存在は知ってたけど、使い方を知ったら「すげえ(きめえ)」という感想にしかならなかったので、記事に書きました。setなどがあります。なんとなく使っている、いつもlist、それぞれ微妙に使い勝手が違って困る、という人も多いと思います。そこで、これらについて解説します。実行時カレントディレクトリにcode.pyを置いておいたら訳のわからない落ち方をした。なんかimportしたらまともに動かなかった。俗に言う「二次元配列」をpythonで表現しようとすると、listのlistで書くというのが一番最初に思いつくやり方だと思います。いうことは実はあまり知らなかったので、この際いろいろ試してみます。nanの値を取得したいときは、普通はnumpyを使うと思います。そんなシチュエーションそもそもあまりないという話ですが。即答できる人はあまりいないと思います。線形判別分析は非線形な分布に対応できないのでだいたいイマイチなパフォーマンスになるのですが、QDA(二次判別分析)だと若干緩和されます。二次判別分析はその名の通り分離境界が二次関数になります。pythonを触り始めたばかりの人は、よくこんなエラーに遭遇すると思います。***の部分はfloatだったりlistだったりstrだったりといろいろありますが、とにかくこんなエラーです。正則化回帰は割と定番のモデルなのですが、sklearnのAPIリファレンスをよく見ると、CVが末尾についたモデルがあることがわかります。このブログについてスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。