Classify[{in1class1,in2class2,}]

iniから classiを予測しようとするClassifierFunctionを生成する.

Classify[data,input]

与えられた訓練例から input に関連付けられた出力を予測しようとする.

Classify[data,input,prop]

指定された特性 prop を予測と相対的に計算する.

詳細とオプション

  • Classifyは,観測されたパターンに基づいてデータをクラスに分類するアルゴリズムの訓練に使われる.
  • 分類は,電子メールのフィルタリング,画像や手書きの認識,パターン識別に基づく医療診断,ビジネス分析における顧客行動の予測等によく使われる,教師あり学習のアプローチである.
  • Classifyは,数値,テキスト,サウンド,画像,それらの組合せを含む,さまざまなデータタイプに使うことができる.
  • 複雑な式は数やクラスのようなより簡単な特徴に自動的に変換される.
  • 最終的なモデルタイプとハイパーパラメータ値は,訓練データについての相互検定を使って選択される.
  • 訓練 data は以下の構造を持つことができる.
  • {in1out1,in2out2,}入出力間のRuleのリスト
    {in1,in2,}{out1,out2,}入力と対応する出力の間のRule
    {list1,list2,}n出力としての各Listn 番目の要素
    {assoc1,assoc2,}"key"出力としての各Association"key"要素
    Dataset[]column出力としてのDatasetの指定されたcolumn
  • data の特殊形には以下がある.
  • "name"組込みの分類器関数
    FittedModel[]ClassifierFunctionに変換されたフィットモデル
    NetChain[],NetGraph[]分類器を表すネットをClassifierFunctionに変換する
  • 各例の入力 iniは,単一のデータ要素,リスト{feature1, },あるいは連想<|"feature1"value1,|>でよい.
  • 各例の出力 outiは,文字列,整数,あるいはブール値のような任意の原子式でよい.
  • 予測の特性 propClassifierFunctionにおけるのと同じで,以下がある.
  • "Decision"確率と効用関数に基づく最良クラス
    "TopProbabilities"最もあり得るクラスの確率
    "TopProbabilities"nn 番目に最もあり得るクラスの確率
    "Probability"class特定のクラスの確率
    "Probabilities"可能なすべてのクラスについての確率の連想
    "SHAPValues"各例についてのシャープレイ加算特徴の説明
    "Properties"使用可能な全特性のリスト
  • "SHAPValues"は,さまざまな特徴を削除し次に合成した結果の予測を比較することで特徴の貢献度を評価する.オプションMissingValueSynthesisを使って欠測値を合成する方法が指定できる.SHAPの説明は訓練出力の平均からの偏差として与えられる."SHAPValues"n を使ってSHAPの説明の数値推定に使われるサンプル数が制御できる.
  • 組込み分類器関数の例
  • "CountryFlag"画像の国旗がどこの国のものか
    "FacebookTopic"Facebookの投稿が何の話題についてのものか
    "FacialAge"顔から推測される年齢
    "FacialExpression"顔が表している感情のタイプ
    "FacialGender"顔から推測される性別
    "Language"テキストがどの自然言語のものか
    "LanguageExtended"テキストの言語(希少言語を含む)
    "NameGender"名前の性別
    "NotablePerson"画像がどの著名人のものか
    "NSFWImage"画像が「職場にふさわしくない」とみなされるかどうか
    "Profanity"テキストに不敬な言葉が含まれているかどうか
    "ProgrammingLanguage"どのプログラミング言語のテキストが入っているか
    "Sentiment"ソーシャルメディアの投稿の感情
    "Spam"電子メールが迷惑メールかどうか
    "SpokenLanguage"音声録音が何語のものか
  • 使用可能なオプション
  • AnomalyDetector None分類器が使う異常検出器
    AcceptanceThreshold Automatic異常検出器の稀少確率閾値
    ClassPriors Automaticクラスの明示的な優先確率
    FeatureExtractor Identity学習対象となる特徴をどのように抽出するか
    FeatureNames Automatic入力データに割り当てる特徴名
    FeatureTypes Automatic入力データに仮定する特徴タイプ
    IndeterminateThreshold 0どの確率未満でIndeterminateを返すか
    Method Automatic使用する分類アルゴリズム
    MissingValueSynthesis Automatic欠測値の合成方法
    PerformanceGoal Automaticパフォーマンスのどの面について最適化するか
    RandomSeeding1234どのような擬似乱数生成器のシードを内部的に使うべきか
    RecalibrationFunction Automaticクラス確率をどのように後処理するか
    TargetDevice "CPU"訓練を行うターゲットデバイス
    TimeGoal Automatic分類器の訓練にどのくらい時間をかけるか
    TrainingProgressReporting Automatic訓練中の進捗状況をどのようにレポートするか
    UtilityFunction Automatic実際のクラスおよび予測されたクラスの関数としての効用
    ValidationSet Automatic生成されたモデルを確かめるためのデータ
  • 次は,Methodの可能な設定である.
  • "ClassDistributions"学習済みの分布を使って分類する
    "DecisionTree"決定木を使って分類する
    "GradientBoostedTrees"勾配ブースティングで訓練された木のアンサンブルを使って分類する
    "LogisticRegression"特徴の線形結合からの確率を使って分類する
    "Markov"特徴のシーケンスにマルコフ(Markov)モデルを使って分類する(テキスト,トークンのバッグ等のみ)
    "NaiveBayes"特徴の確率的独立性を仮定して分類する
    "NearestNeighbors"最近傍の例から分類する
    "NeuralNetwork"人工のニューラルネットワークを使って分類する
    "RandomForest"決定木のBreimanCutlerアンサンブルを使って分類する
    "SupportVectorMachine"サポートベクターマシンを使って分類する
  • FeatureExtractor"Minimal"を使うことは,内部処理をできるだけ簡単にすることを意味する.
  • PerformanceGoalの可能な設定値
  • "DirectTraining"モデルを検索することなしに,直接データ集合全体について訓練する
    "Memory"分類器の保存条件を最小にする
    "Quality"分類器の確度を最大にする
    "Speed"分類器のスピードを最大にする
    "TrainingSpeed"分類器の作成に使う時間を最短にする
    Automaticスピード,確度,メモリの自動トレードオフ
    {goal1,goal2,}goal1, goal2等を自動的に組み合せる
  • TrainingProgressReportingの設定として以下を使うことができる.
  • "Panel"動的に更新されるグラフィカルなパネルを表示する
    "Print"Printを使って定期的に情報をレポートする
    "ProgressIndicator"簡単なProgressIndicatorを表示する
    "SimplePanel"学習曲線なしでパネルを動的に更新する
    None情報は何もレポートしない
  • RandomSeedingの可能な設定
  • Automatic関数が呼び出されるたびに自動的にシードを変える
    Inherited外部シードの乱数を使う
    seed明示的な整数または文字列をシードとして使う
  • Classify[ClassifierFunction[],FeatureExtractorfe]では,FeatureExtractorFunction[] fe は,既存の特徴抽出器の先頭に追加される.
  • 得られた ClassifierFunction[]Informationを使うことができる.

例題

すべて開くすべて閉じる

  (2)

ラベル付きの例について分類器関数を訓練する:

分類器関数を使って新たなラベルのない例を分類する:

特徴の関数として例のクラスが"B"である確率をプロットする:

複数の特徴がある分類器を訓練する:

欠けている特徴があるかもしれない新たな例を分類する:

スコープ  (33)

データ形式  (7)

入力例と出力値の間の規則のリストとして訓練集合を指定する:

各例に特徴のリストが含まれてもよい:

各例に特徴の連想が含まれてもよい:

入力リストと出力リストの間の規則のリストとして訓練集合を指定する:

行列中のすべてのデータを指定し,出力列をマークする:

連想のリスト中のすべてのデータを指定し,出力キーをマークする:

データ集合中のすべてのデータを指定し,出力列をマークする:

データ型  (13)

数値  (3)

数から変数を予測する:

数値ベクトルから変数を予測する:

任意の深さの数値配列から変数を予測する:

名義  (3)

名義的値からクラスを予測する:

いくつかの名義的値からクラスを予測する:

名義的値と数値の混合からクラスを予測する:

数量  (1)

Quantityオブジェクトを含むデータで分類器を訓練する:

この分類器を新たな例に使う:

"Price"しか分からない場合に最もありそうな価格を予測する:

テキスト  (1)

テキストデータについて分類器を訓練する:

新たな例を分類する:

  (1)

色の式から変数を予測する:

画像  (1)

画像から動物の種を予測するように予測器を訓練する:

  (1)

特徴がトークンの列であるデータで分類器を訓練する:

欠けたデータ  (2)

欠けた特徴があるデータ集合について分類器を訓練する:

欠けた特徴がある例も分類する:

名前付きの特徴があるデータ集合について分類器を訓練する.キーの順序は関係ない.キーは欠けていてもよい:

特徴が欠けている例を分類する:

情報  (4)

訓練された予測器から情報を抽出する:

入力の特徴についての情報を入手する:

入力の特徴処理に使われる特徴抽出器を入手する:

サポートされる特徴のリストを入手する:

組込み分類器  (9)

"Language"組込み分類器を使ってテキストが書かれた言語を検出する:

これを使って例の言語を検出する:

最も可能性の高い言語の確率を求める:

オプションClassPriorsで分類器をいくつかの言語に限定する:

"FacebookTopic"組込み分類器を使ってFacebookの投稿のトピックを検出する:

複数の例を分類する:

見分けられなかったトピックあるいは言語はIndeterminateとして返される:

"CountryFlag"組込み分類器を使って国旗から国を認識する:

"NameGender"組込み分類器を使って,名前からその人の推定される性別を得る:

"NotablePerson"組込み分類器を使って与えられた画像が表している著名人が誰かを判別する:

"Sentiment"組込み分類器を使ってソーシャルメディアのメッセージに対する感情を推定する:

"Profanity"組込み分類器を使って,テキストに暴言が含まれている場合はTrueを返すようにする:

"Spam"組込み分類器を使って,電子メールの内容からそれが迷惑メールかどうかを検出する:

"SpokenLanguage"組込み分類器を使ってテキストが書かれた言語を検出する:

オプション  (23)

AcceptanceThreshold  (1)

異常検出器のある分類器を作る:

分類器の評価の際に許容閾値を変える:

分類器の閾値を永久的に変える:

AnomalyDetector  (1)

分類器を作って異常検出器を含めるように指定する:

異常ではない入力で分類器を評価する:

異常な入力で分類器を評価する:

"Probabilities"特性は異常検出器の影響を受けない:

異常検出器を一時的に分類器から削除する:

異常検出器を永久的に分類器から削除する:

ClassPriors  (1)

バランスの悪いデータ集合について分類器を訓練する:

訓練用の例5FalseTrueとして分類される:

この例を,バランスの悪い予備訓練ではなく,クラスについての優先される特徴で分類する:

クラスの優先度は訓練中に指定できる:

クラスの優先度は訓練後に再度変えることができる:

FeatureExtractor  (3)

FeatureExtractorFunctionをサンプルのデータ集合について訓練する:

特徴抽出器関数をClassifyの前処理ステップとして使う:

カスタム関数と抽出器法で処理されたテキストについて分類器を訓練する:

特徴抽出器を作り,テキストのデータ集合から特徴を抽出する:

抽出された特徴について分類器を訓練する:

特徴抽出器と分類器を結合する:

これで,分類器が初期入力タイプに使えるようになった:

FeatureNames  (2)

分類器を訓練し,各特徴に名前を与える:

連想形式を使って新たな例を予測する:

リスト形式も,まだ使用することができる:

名前付きの特徴の訓練集合で分類器を訓練し,FeatureNamesを使って順序を設定する:

特徴は指定された通りに並べられた:

リストから新たな例を分類する:

FeatureTypes  (2)

特徴が一連のトークンであることが意図されているデータについての分類器を訓練する:

Classifyは,例が異なる2つの名義的な特徴を含んでいると誤って仮定した:

次の分類はエラーメッセージを出す:

Classifyが特徴を"NominalSequence"として解釈するように強制する:

新たな例を分類する:

名前付きの特徴について分類器を訓練する:

どちらの特徴も数値的であるとみなされている:

特徴"gender"を名義的であるとみなすように指定する:

IndeterminateThreshold  (1)

分類器の訓練中に確率閾値を指定する:

この例のクラス確率を得る:

0.9より上のクラス確率がないので,予測は行われない:

分類の際に指定した閾値は,訓練の際の閾値に優先する:

分類器の閾値の値を更新する:

Method  (3)

ロジスティック分類器を訓練する:

ランダムフォレスト分類器を訓練する:

両方の分類器の特徴を与えられたとして,クラス"a"である確率をプロットする:

最近傍分類器を訓練する:

検定集合についての分類確度を求める:

この例では,単純ベイズ(Bayes)分類器を使うと分類確度が下がる:

しかし,単純ベイズ分類器を使うと分類時間が短縮できる:

MONKの問題は,異なる分類器のパフォーマンスを比較するために使われる,総合的な二項分類データ集合からなる.第2MONK問題についてのデータ集合を生成する:

169の例について訓練し,データ集合全体について検定することで,使用可能な各分類器の確度を検定する:

MissingValueSynthesis  (1)

2つの入力特徴で分類器を訓練する:

欠落値がある例のクラス確率を得る:

欠落値の合成を設定して,既知の値が与えられた場合に各欠落変数を推定される最も可能性が高い値で置換する(これがデフォルト動作である):

欠落変数を既知の値を条件としてランダムなサンプルで置換する:

数多くのランダムなデータの補完を平均することが大抵の場合は最良の策で,補完で引き起こされる不確実性も得ることができる:

訓練中に学習メソッドを指定してデータの分布の学習方法を制御する:

"KernelDensityEstimation"分布を使って欠落値がある例を条件値に分類する:

既存のLearnedDistributionを訓練時に与えることで,訓練中と後の評価での欠落値の補完にこれを使うようにする:

既存のLearnedDistributionを指定して個々の評価のために欠落値を合成する:

訓練に連想を渡すことで学習方法と評価戦略の両方を制御する:

RecalibrationFunction  (1)

MNISTデータ集合をロードする:

再較正なしにランダムな森林分類器を訓練する:

検定集合の較正曲線を可視化する:

ランダムな森林分類器を再較正して訓練する:

検定集合の較正曲線を可視化する:

PerformanceGoal  (1)

訓練速度に重点を置いて分類器を訓練する:

検定集合の分類確度を計算する:

デフォルトで,分類速度とパフォーマンスの妥協が求められる:

同じデータを使い,訓練速度とメモリに重点を置いて分類器を訓練する:

この分類器はメモリ使用量が少ないが,確度も低い:

TargetDevice  (1)

ニューラルネットワークを使ってシステムのデフォルトGPUで分類器を訓練し,AbsoluteTimingを見る:

この結果を,デフォルトのCPU計算を使って達した時間と比較する:

TimeGoal  (2)

総訓練時間を5秒に指定して分類器を訓練する:

"Mushroom"データ集合をロードする:

目標訓練時間を0.1秒に設定して分類器を訓練する:

この分類器の確度は90%に達した:

目標訓練時間を5秒に設定して分類器を訓練する:

この分類器の確度は99%に達した:

TrainingProgressReporting  (1)

"UCILetter"データ集合をロードする:

分類器の訓練中に,訓練の進捗状況をインタラクティブに表示する:

訓練の進捗状況を,プロットなしでインタラクティブに表示する:

訓練中,訓練の進捗状況を定期的出力する:

簡単な進捗状況インジケータを表示する:

進捗状況のレポートは行わない:

UtilityFunction  (1)

分類器を訓練する:

デフォルトで,最も可能性の高いクラスが予測される:

これは,次の効用指定に相当する:

クラス"yes"の例が誤って"no"に分類されたことにペナルティを課す分類器を訓練する:

この分類器の決定は確率が変わっていないのに上とは異なる:

分類の際に指定された効用関数は,訓練時に指定された効用関数に優先する:

分類器の中の効用関数の値を更新する:

ValidationSet  (1)

フィッシャー(Fisher)の「アヤメ」に関するデータ集合について,ロジスティック回帰分類器を訓練する:

訓練した分類器のL2正規化係数を得る:

検定集合を指定する:

別のL2正規化係数が選ばれた:

アプリケーション  (10)

タイタニック号の生存者  (2)

タイタニック号の乗客の,年齢,性別,船室クラス,生存・死亡の情報を含む"Titanic"というデータ集合をロードする:

データ集合のサンプルを可視化する:

このデータ集合についてロジスティック分類器を訓練する:

3等船室の10歳の少女の生存確率を計算する:

"class""sex"の組合せについて,生存確率を年齢の関数としてプロットする:

タイタニック号の事故における生存確率を予測する分類器を訓練する:

乗客が死亡する事前確率を計算する:

この分類器を使って乗客が死亡する確率を予測する:

各特徴がクラスのモデルの予測確率をどのように乗算するかの説明を取得する:

特徴の影響に関するモデルの説明を確率の基本レートと比較する:

フィッシャーのアヤメ  (3)

「アヤメ」の種を予測するように,フィッシャーのアヤメについてのデータ集合で分類器を訓練する:

特徴のリストから「アヤメ」の種を予測する:

検定集合でこの分類器の確度を検証する:

この検定集合について,分類器の混同行列を生成する:

映画評の断片を"positive"あるいは"negative"に分類するように分類器を訓練する:

未見の映画評の断片を分類する:

検定集合で分類器の確度を検証する:

シェイクスピア,オスカー・ワイルド,ヴィクトル・ユーゴーの文章例をインポートし,分類器を訓練する:

これらのテキストから作家分類器を生成する:

新たなテキストがどの作家のものかを求める:

画像認識  (3)

手書き数字のMNISTデータベースからの100例で数字認識装置を訓練する:

分類器を使って未知の数字を認識させる:

誤って分類された例の確率を分析する:

伝説の「生物」の32画像について分類器を訓練する:

この分類器を使って未知の「生物」を認識する:

昼と夜が見分けられるように,分類器を訓練する:

例で検証する:

特徴の説明  (1)

手書きの数字の画像をインポートして3, 5, 8を選ぶ:

画像のいくつかを可視化する:

画像をその画素値に変換し,クラスを分ける:

数字を個々の画素値で識別するように分類器を訓練する:

各画素を(速度を上げるために)独立したものとして扱うデータの簡単な分布を学習する:

"SHAPValues"特性を使って例の各画素が予想されたクラスにどのように影響するかを推定する:

Logを取って「オッズ乗数」SHAP値を0を中心としたスケールに変換する:

画素値を掛けて暗さで重み付けされた各画素の影響を見る:

数字が0か6かについてのモデルの自信を画素がどのように増加(赤)または減少(青)したかを可視化する:

詐欺の検出  (1)

特徴の集合に基づいて疑わしいトランザクションにフラッグを立てる分類器を訓練する:

トランザクション量だけに基づいて詐欺の確率をプロットする:

カードとトランザクションのタイプに基づいて詐欺の確率を表示する:

考えられる問題  (1)

RandomSeedingオプションは,常に結果の再生可能性を保証する訳ではない.

"Titanic"データ集合でいくつかの分類器を訓練する:

検定集合について検定した時の結果を比較する:

おもしろい例題  (2)

正規分布からサンプルされたクラスタを定義し,プロットする:

各メソッドについて,さまざまなクラスの確率密度を反映するように,色を混合する:

ボックスに書き込んで,データ集合ExampleData[{"MachineLearning","MNIST"}]について訓練されたロジスティック分類器を検定する:

Wolfram Research (2014), Classify, Wolfram言語関数, https://reference.wolfram.com/language/ref/Classify.html (2024年に更新).

テキスト

Wolfram Research (2014), Classify, Wolfram言語関数, https://reference.wolfram.com/language/ref/Classify.html (2024年に更新).

CMS

Wolfram Language. 2014. "Classify." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/Classify.html.

APA

Wolfram Language. (2014). Classify. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Classify.html

BibTeX

@misc{reference.wolfram_2024_classify, author="Wolfram Research", title="{Classify}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/Classify.html}", note=[Accessed: 07-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_classify, organization={Wolfram Research}, title={Classify}, year={2024}, url={https://reference.wolfram.com/language/ref/Classify.html}, note=[Accessed: 07-November-2024 ]}