Python 機械学習 (7) デシジョン ツリー (パート 2) 特徴量エンジニアリング、辞書機能、テキスト機能、デシジョン ツリー アルゴリズム API、視覚化、回帰問題解決

デシジョンツリーアルゴリズム

特徴エンジニアリング - 特徴抽出

特徴抽出とは、任意のデータを機械学習に使用できる数値特徴に変換することです。コンピュータは文字列を直接認識することができず、文字列を機械が理解できるデジタル特徴量に変換することによってのみ、文字列(特徴量)の意味を理解することができる。
大きく分けて、辞書特徴抽出(特徴離散化)、テキスト特徴抽出(記事中の特徴語の出現頻度)。

辞書特徴抽出

カテゴリデータを変換します。
コンピュータは直接インポートされた都市と温度のデータを認識できないため、コンピュータが認識できるように 0、1 コードに変換する必要があります。
ここに画像の説明を挿入
コードでは次のように実装されます。
ここに画像の説明を挿入

辞書特徴抽出API

sklearn.feature_extraction.DictVectorizer(sparse=Ture,...)
DictVectorizer.fit_transform(X),X:字典或者包含字典的迭代器返回值,返回sparse矩阵
DictVectorizer.get_feature_names()返回类别名称

ここに画像の説明を挿入
データ量が比較的大きい場合、疎行列を使用すると、特徴データがより適切に表示され、より直感的で、0 データが表示されず、メモリが節約されます。

テキスト特徴抽出

テキストデータを特徴づけ、記事内の各単語の出現頻度を調べます。

テキスト特徴抽出 API

sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
返回词频矩阵。
CountVectorizer.fit_transform(X)
X:文本或者包含文本字符串的可迭代对象
返回值:返回sparse矩阵
CountVectorizer.get_feature_names()返回值:单词列表

英語テキスト特徴抽出の実装

要件: 次の段落に語彙の頻度を反映します。

[「人生は終わりのない道だ」、「私は歩きます、歩きます、歩き続けます。」]

注:
1. テキスト特徴抽出にはスパース パラメーターはなく、デフォルトのスパース行列でのみ受信できます
2. I、a などの 1 つの文字はカウントされません
3. stop_words を通じてストップ ワードを指定します

ここに画像の説明を挿入

中国語テキスト特徴抽出の実装

要件: 次の段落に語彙の頻度を反映します。

data = ['この出会い','とても美しい、とても美しい、とても美しい、とても美しい、とても美しい。']

ここに画像の説明を挿入
要件: 以下の文章内の単語の出現頻度を反映する
ここに画像の説明を挿入
記事内の単語を均等に抽出し、重複する値を削除してリストにまとめる マトリックスは、各行に各単語が出現する回数を示します。出現する単語の数に応じて、記事は単語に関連する記事として分類できます。

Tf-idf テキスト特徴抽出

TF-IDF の主な考え方は、ある単語またはフレーズが記事内に出現する可能性が高く、他の記事にはめったに出現しない場合、その単語またはフレーズは優れたカテゴリー識別能力を備えており、記事に適していると考えられます。分類に使用します。
TF-IDF の役割: ファイル セットまたはコーパス内のファイルの単語の重要性を評価するために使用されます。

Tf-idf テキスト特徴抽出式: tfidfi , j = tfi , j ∗ idfi tfidf_{i,j}=tf_{i,j}*idf_it f i d f j=t f j私は、私私は
用語頻度 (用語頻度、tf): 特定の単語が文書内に出現する頻度を指します
逆文書頻度 (逆文書頻度、idf): 単語の一般的な重要性の尺度です。特定の単語の idf は、ドキュメントの総数をその単語を含むドキュメントの数で割って、得られた商の底を 10 とする対数を取ることによって取得できます。

たとえば、記事が 1000 ワードで構成され、不動産が 500 回出現すると、この記事の不動産の出現頻度 tf は次のようになります: 500/1000=0.5; 不動産は 1000 件の文書に出現し、文書の総数は 1000000 です。 idf :ログ 1000000 / 1000 = 3 ログ 1000000/1000=31000000/1000 _ _ _=3 ;tf-idf は 0.5*3=1.5 です。
特定の記事内で単語が出現する回数 (頻度) を調べるだけでなく、ファイル セット全体でその単語が出現する回数も調べる必要があります。

Tf-idf テキスト特徴抽出 API

sklearn.feature_extraction.text.TfidfVectorizer

ここに画像の説明を挿入
ここに画像の説明を挿入
tfidf の計算結果が得られますが、ファイルセットがない場合は行ごとに分割され、リストをファイルセットとして各行がファイルとして処理されます。tfidf のサイズを判断することにより、特定の語彙がセグメンテーションの重要な語彙として使用されます。

デシジョン ツリー アルゴリズム API

カテゴリ API

sklearn.tree.DecisionTreeClassifier 决策树的分类算法器
 - criterion:设置树的类型
 - entropy:基于信息熵,也就是ID3算法,实际结果与C4.5相差不大
 - gini:默认参数,相当于基尼系数。CART算法是基于基尼系数做属性划分的,
所以criterion=gini时,实际上执行的是CART算法。
 - splitter:在构造树时,选择属性特征的原则,可以是best或random。默认是best,
 - best代表在所有的特征中选择最好的,random代表在部分特征中选择最好的。
 - max_depth:决策树的最大深度,可以控制决策树的深度来防止决策树过拟合。
 - min_samples_split:当节点的样本数小于min_samples_split时,不再继续分裂,默认值为2
 - min_samples_leaf:叶子节点需要的最小样本数。如果某叶子节点的数目小于这个阈值,则会和
兄弟节点一起被剪枝。可以为intfloat类型。
 - min_leaf_nodes:最大叶子节点数。int类型,默认情况下无需设置,特征不多时,无需设置。
特征比较多时,可以通过该属性防止过拟合。

事例: タイタニック号の乗客生存予測

要件: 生存率を予測するには、次のデータを読んでください。

train.csv はトレーニング データ セットで、特徴情報と生存ラベルが含まれます。test.csv
はテスト データ セットで、特徴情報のみが含まれます。
PASSENGERId: 乗客番号; Survived: 生存; Pclass: チケットのクラス; Name: 名前; Sex: 性別; Age: 年齢;
SibSp: 親族 (兄弟) の数; Parch: 親族 (親と子) の数; Ticket: チケット番号; 料金: 航空券の価格; キャビン: キャビン;

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

フィールドの分析を通じて、純粋な数値型は平均値で置き換えられることに注意してください。文字列型の欠損値が大きすぎる場合は、直接削除されます。欠損値が比較的小さい場合は、特徴の選択は可能な限り近いものにする必要がありますラベルには関連する特徴があり、特徴内のテキストを対応する値に変換し、最後にモデルをトレーニングしてから、K 分割交差検証を実行します。

デシジョンツリーの視覚化

安装graphviz工具,下载地址:http://www.graphviz.org/download/
将graphviz添加到环境变量PATH中,然后通过pip install graphviz 安装graphviz库

ここに画像の説明を挿入
生成された画像は比較的大きいので、PDF ファイルとして保存できます。効果は次のとおりです。
ここに画像の説明を挿入

回帰問題のデシジョン ツリー

決定木は ID3、C4.5、CART アルゴリズムに基づいており、回帰問題は CART アルゴリズムとジニ係数に基づいて実装されています。
ボストンの住宅価格のデータとデシジョン ツリーの回帰問題インターフェイスをインポートします。次に、データ インターフェイスを呼び出してデータ セットを取得し、特徴名、特徴セットを取得し、トレーニング セットとテスト セットの特徴とラベルを取得します。 、トレーニングと予測を実行します。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/hwwaizs/article/details/132114797