Python 開発者のための Spark — データのための Spark と機械学習

Python 開発者のための Spark — データのための Spark と機械学習

機械学習はデータから有用な洞察を引き出すことができます。目標は、Spark MLlib を使用して適切なアルゴリズムを適用し、データセットから洞察を生成することです。 Twitter データセットでは、教師なしクラスタリング アルゴリズムを使用して、Apache Spark に関連するツイートを区別します。初期入力はツイートの混合物です。 まず、関連する特徴が抽出され、次に機械学習アルゴリズムがデータセットに適用され、最後に結果とパフォーマンスが評価されます。

この章の主なポイントは次のとおりです。

  • Spark MLlib モジュールとそのア​​ルゴリズム、および一般的な機械学習プロセスについて学習します。
  • 収集された Twitter データセットは、関連する特徴を抽出するために前処理され、教師なしクラスタリング アルゴリズムが適用されて Apache Spark 関連のツイートが識別されます。次に、得られたモデルと結果が評価されます。
  • Spark 機械学習パイプラインについて説明します。

アプリケーション アーキテクチャにおける Spark MLlib の位置

まず、データ集約型アプリケーションのアーキテクチャにおけるデータ学習の位置づけについて、分析層、より正確には機械学習に焦点を当てて見てみましょう。これはバッチ データ学習とストリーミング データ学習の両方の基礎であり、推論のルールが異なるだけです。

次の図は要点を示しています。分析レイヤーでは、探索的データ分析ツールである Spark SQL と Pandas、および機械学習モジュールを処理します。

Spark MLlib アルゴリズム分類

Spark MLlib は急速に更新されるモジュールであり、新しいアルゴリズムが常に Spark に導入されています。

次の図は、従来の機械学習技術のシステムまたはデータ連続体に従ってグループ化された Spark MLlib アルゴリズムの概要を示しています。

Spark MLlib アルゴリズムは、データのタイプに基づいて、順序なしまたは連続の 2 つのカテゴリに分けられます。データを順序なしデータと連続データに分けます。定性データの例: 気圧、気温、雲の種類と存在、天気が晴れ、乾燥、雨、曇りのいずれかである場合、彼女が男性用のトップスを着ているかどうかを予測します。これらは離散値です。 一方、場所、住宅面積、部屋数を指定して、住宅の価格を予測したい場合は、線形回帰を使用して不動産を予測できます。 この例では、連続データについて説明します。

レベルのグループ化は、使用される機械学習アルゴリズムの種類を反映します。教師あり機械学習と教師なし機械学習は、トレーニング データにラベルが付けられているかどうかによって異なります。教師なし学習の課題は、ラベルのないデータに対して学習アルゴリズムを使用することです。目標は、入力内の暗黙的な構造を発見することです。 教師あり学習のデータにはラベルが付けられています。 連続データの回帰予測と離散データの分類に重点が置かれています。

機械学習の重要なカテゴリは、主に協調フィルタリング技術を活用する推奨システムです。 Amazon と Netflix には、独自の非常に強力な推奨システムがあります。確率的勾配降下法は、Spark 分散コンピューティングに適した機械学習最適化手法の 1 つです。大量のテキストを処理するために、Spark は TF-IDF、Word2Vec、標準スケーラー、ノーマライザーなどの特徴抽出と変換のための重要なライブラリを提供します。

教師あり学習と教師なし学習

Spark MLlib が提供する従来の機械学習アルゴリズムを詳しく見てみましょう。教師あり機械学習と教師なし機械学習は、トレーニング データにラベルが付けられているかどうかによって異なります。順序なしと連続の違いは、データが離散的か連続的かによって異なります。

次の図は、Spark MLlib の教師ありおよび教師なしアルゴリズムと前処理手法を説明しています。

以下は、Spakr MLlib の教師ありおよび教師なしアルゴリズムと前処理手法です。

  • クラスタリング: データにラベルが付けられておらず、データから構造を抽出することを目的とする教師なし機械学習手法。

∞ K平均法: データをK個の異なるクラスターに分割する

∞ ガウス混合分布: 事後確率クラスタリングのコンポーネントベースの最大化

∞ 累乗反復クラスタリング (PIC): グラフの頂点の2つの辺の類似性に基づくクラスタリング

∞ 潜在ディリクレ分布(LDA):テキスト文書をトピックにクラスタリングするために使用される

∞ ストリーミングK平均法: ウィンドウ関数を使用して、受信データストリームに対してK平均法クラスタリングを動的に実行します。

  • 次元削減: 特徴の数を減らすことを目的としています。基本的には、データ内のノイズを減らし、主要な特徴に焦点を当てるために使用されます。

∞ 特異値分解 (SVD): 行列内のデータを単純で意味のある部分に分割し、最初の行列から 3 つの行列を生成します。

∞ 主成分分析 (PCA): サブスペース内の低次元データを使用して高次元データ セットを近似します。

  • 回帰と分類: 分類器は結果をクラスに分類しますが、回帰はラベル付けされたトレーニング データを使用して出力結果を予測します。カテゴリ変数は離散的で順序付けられていませんが、回帰変数は連続的で順序付けられています。

∞ 線形回帰モデル (線形回帰、ロジスティック回帰、サポート ベクター マシン): 線形回帰アルゴリズムは凸最適化問題として表現でき、その目的は重み付き変数のベクトルに基づいて目的関数を最小化することです。

目的関数は、関数の通常部分を通じて関数の複雑さを制御し、関数の損失部分を通じて関数の誤差を制御します。

∞ ナイーブベイズ: 変数の独立性を基本仮定として、特定のラベルの条件付き確率に基づいて予測が行われます。

∞ 決定木: 特徴空間の再帰的なバイナリ分割を実行し、ツリーノードの情報ゲインを最大化して最適な分割を実現します。

∞ ツリーのアンサンブル (ランダム フォレストと勾配ブースティング ツリー): ツリー アンサンブル アルゴリズムは、複数の決定木モデルを組み合わせて、高性能なモデルを構築します。非常に直感的で、分類と回帰に適しています。

  • 等温回帰: 与えられたデータと観測された応答の間の二乗平均平方根誤差を最小化します。

その他の学習アルゴリズム

Spark MLlib は、他の多くのアルゴリズムも提供します。大まかに言えば、他の機械学習アルゴリズムは 3 つあります。

レコメンデーション システム、最適化アルゴリズム、および特徴抽出。

MLlib で現在利用可能な他のアルゴリズムは次のとおりです。

  • 協調フィルタリング: ギャップを埋めることを目的としてユーザーとアイテムの関連マトリックスを作成する、推奨システムの基礎です。他のユーザーやアイテムの評価に基づいて、評価のないターゲットユーザーにアイテムを推奨します。分散コンピューティングでは、ALS (交互最小二乗法) が最も成功したアルゴリズムの 1 つです。

∞ 交互最小二乗法: 行列因数分解技術は、暗黙的なフィードバック、時間効果、信頼レベルを使用して、大規模なユーザー項目行列を低次元のユーザー項目因子に分解し、因子を置き換えることで二次損失関数を最小化します。

  • 特徴抽出と変換: これらは大規模なドキュメント処理の基礎であり、次の技術が含まれます。

∞ 用語の頻度: 検索エンジンは TF-IDF を使用してコーパス内のドキュメントをランク付けします。これは、機械学習で文書またはコーパス内の単語の重要度を判断するために使用されます。単語の頻度統計によって決定される重みは、コーパス内での単語の出現頻度によって異なります。

用語の頻度自体は、たとえば the、of、and などの情報価値のない単語を強調しすぎるなど、誤解を招く可能性があります。逆ドキュメント頻度は、特異性または情報価値、つまりコーパス内のすべてのドキュメントで単語がどの程度一般的であるかの尺度を提供します。

∞ Word2Vec: Skip-Gram と Continuous Bag of Word の 2 つのモデルが含まれます。Skip-Gram は、単語のスライディング ウィンドウに基づいて、特定の単語の隣接する単語を予測します。Continuous Bag of Words は、特定の隣接する単語の現在の単語を予測します。

∞ 標準スケーラー: 前処理の一環として、データセットは平均除去と分散スケーリングによって標準化されることがよくあります。トレーニング データの平均と標準偏差を計算し、同じ変換をテスト データに適用します。

∞ ノーマライザー: サンプルをスケーリングするときに正規化します。ドット積やカーネル法などの二次形式に非常に便利です。

∞ 特徴選択: モデル内で最も関連性の高い特徴を選択することで、ベクトル空間の次元を削減します。

∞ カイ二乗セレクター: 2 つのイベントの独立性を測定する統計的手法。

  • 最適化: これらの Spark MLlib 最適化アルゴリズムは、さまざまな勾配降下法に重点を置いています。 Spark は、分散クラスター上での勾配降下法の非常に効率的な実装を提供し、非常に小さなローカル反復を通じて勾配の急速な降下を完了します。すべてのデータ変数を反復処理すると、計算負荷が増大します。

∞ 確率的勾配降下法: 微分可能な関数の合計である目的関数を最小化します。確率的勾配降下法では、トレーニング データのサンプルのみを使用して特定の反復のパラメーターを更新し、テキスト分類などの大規模なスパース マシン ラーニングの問題を解決するために使用されます。

  • 限定メモリ BFGS (L-BFGS): 名前が示すように、L-BFGS は限定メモリを使用し、Spark MLlib に実装された分散最適化アルゴリズムに適しています。

Spark MLlib データ型

MLlib は、ローカル ベクトル、ラベル付きポイント、ローカル マトリックス、分散マトリックスの 4 つのデータ型をサポートしています。Spark MLlib アルゴリズムは、これらのデータ型を広範に使用します。

  • ローカル ベクトル: 単一のマシン上に配置され、密または疎になります。

∞ 密ベクトルは従来の double 配列です。たとえば、[5.0, 0.0, 1.0, 7.0] などです。

∞ スパースベクトルは整数値と倍精度値を使用します。スパースベクトル [5.0, 0.0, 1.0, 7.0] は (4, [0, 2, 3], [5.0, 1.0, 7.0]) となり、ベクトルの次元を示します。

以下は、PySpark でネイティブ ベクトルを使用する例です。

  1. numpyをnpとしてインポートする
  2. scipy.sparse をspsとしてインポートします。
  3. pyspark.mllib.linalgからベクトルをインポートする
  4.  
  5. # 密なベクトルNumPy 配列
  6. dvect1 = np.array([5.0, 0.0, 1.0, 7.0])
  7. # 密なベクトルPython リスト
  8. dvect2 = [5.0, 0.0, 1.0, 7.0]
  9. # SparseVector の作成
  10. svect1 = Vectors.sparse(4, [0, 2, 3], [5.0, 1.0, 7.0])
  11. # 単一列のSciPy csc_matrixを使用したスパースベクトル
  12. svect2 = sps.csc_matrix((np.array([5.0, 1.0, 7.0]), np.array([0,
  13. 2, 3]))、形状 = (4, 1))
  • ラベル付きポイント。ラベル付きポイントは、教師あり学習におけるラベル付きの密または疎なベクトルです。バイナリ ラベルでは、0.0 は負の値、1.0 は正の値を表します。

以下は PySpark でポイントにラベルを付ける例です。

  1. pyspark.mllib.linalgからSparseVector をインポートします
  2. pyspark.mllib.regressionからLabeledPoint をインポートします
  3.  
  4. #正のラベル密な特徴ベクトルを持つラベル付けされたポイント。
  5. lp_pos = ラベル付きポイント(1.0, [5.0, 0.0, 1.0, 7.0])
  6.  
  7. #負のラベルスパースな特徴ベクトルを持つラベル付きポイント。
  8. lp_neg = ラベル付きポイント(0.0, スパースベクトル(4, [0, 2, 3], [5.0, 1.0,
  9. 7.0]))
  • ローカル マトリックス: ローカル マトリックスは単一のマシン上に配置され、整数インデックスと double 値を持ちます。

以下は PySpark のローカル マトリックスの例です。

  1. pyspark.mllib.linalgからMatrix、Matrices をインポートします
  2.  
  3. # 密行列 ((1.0, 2.0, 3.0), (4.0, 5.0, 6.0))
  4. dMatrix = Matrices.dense(2, 3, [1, 2, 3, 4, 5, 6])
  5.  
  6. # スパース行列 ((9.0, 0.0), (0.0, 8.0), (0.0, 6.0))
  7. sMatrix = Matrices.sparse(3, 2, [0, 1, 3], [0, 2, 1], [9, 6, 8])
  • 分散マトリックス: RDD の成熟度を利用して、分散マトリックスをクラスター全体で共有できます。分散マトリックスには、RowMatrix、IndexedRowMatrix、CoordinateMatrix、BlockMatrix の 4 種類があります。

∞ RowMatrix: 複数のベクトルの RDD を使用して、RowMatrix と呼ばれる意味のないインデックスを持つ行分散マトリックスを作成します。

∞ IndexedRowMatrix: 行インデックスは意味を持ちます。まず IndexedRow クラスを使用してインデックス付き行を持つ RDDFirst を作成し、次に IndexedRowMatrix を作成します。

∞ CoordinateMatrix: 大規模で疎な行列を表すのに非常に便利です。 CoordinateMatrix は、MatrixEntry の RDD から作成され、型 (long、long、または float) のタプルによって表されます。

∞ BlockMatrix: ((blockRowIndex, blockColIndex), サブマトリックス) 形式のサブマトリックス ブロックの RDD から作成されます。

機械学習ワークフローとデータフロー

機械学習ではアルゴリズムに加えて処理も必要であり、教師あり学習と教師なし学習の一般的なプロセスとデータフローについて説明します。

教師あり学習ワークフロー

教師あり学習では、入力トレーニング データ セットにラベルが付けられます。重要な方法は、入力をトレーニングとテスト、および対応するモデルに分割することです。教師あり学習を完了するには、次の 6 つの手順があります。

  • データを収集する: このステップは、前の章に基づいており、機械学習アルゴリズムが信頼できる回答を提供できるように、データの量と粒度が適切であることを確認します。
  • データを前処理します。サンプリングによってデータの品質を確認し、欠落しているデータ値を入力し、データをスケーリングして正規化します。同時に、特徴抽出プロセスが定義されます。通常、大規模なテキスト データセットでは、トークン化、ストップワードの削除、ステミング、TF-IDF が実行されます。教師あり学習では、データはそれぞれトレーニング セットとテスト セットに分割されます。また、クロス検証のためにデータセットを分割するためのさまざまなサンプリング戦略も実装しました。
  • データを準備する: アルゴリズムに必要な形式とデータ型でデータを準備します。 Spark MLlib では、これらにはローカル ベクトル、密または疎なベクトル、ラベル付きポイント、ローカル マトリックス、行マトリックスを含む分散マトリックス、インデックス付き行マトリックス、座標マトリックス、ブロック マトリックスが含まれます。
  • モデル: 問題に対してアルゴリズムを使用し、最も適したアルゴリズムの評価結果を取得します。同じ問題に適したアルゴリズムが複数存在する場合があります。その場合、最適なものを選択できるように、それらのパフォーマンスが評価ステップに保存されます。 最良の結果を得るために、包括的なソリューションまたはモデルの組み合わせを実装できます。最適化: 一部のアルゴリズムのパラメータの最適化では、グリッド検索を実行する必要があります。これら 9 つのパラメーターは、トレーニング、テスト、製品調整の段階によって異なります。
  • 評価: 最後に、モデルにスコアが付けられ、精度、パフォーマンス、信頼性、スケーラビリティに基づいて最適なモデルが選択されます。 最もパフォーマンスの高いモデルを使用してデータをテストし、モデルの予測の精度を確認します。調整されたモデルに満足したら、実際のデータを使用して本番環境に移行できます。

教師あり機械学習のワークフローとデータフローを次の図に示します。

教師なし学習ワークフロー

教師あり学習とは対照的に、教師なし学習の初期データはラベル付けされておらず、これが現実の状況です。データ内の構造は、クラスタリングまたは次元削減アルゴリズムによって抽出されます。教師なし学習では、データにラベルが付いておらず予測ができないため、データをトレーニングとテストに分割する必要はありません。データをトレーニングするための 6 つのステップは、教師あり学習のステップと似ています。モデルがトレーニングされると、結果が評価され、モデルは本番環境にリリースされる前に調整されます。

教師なし学習は教師あり学習の最初のステップです。 つまり、データ次元の削減は学習段階に先行します。

教師なし機械学習のワークフローとデータフローは次のように表現されます。

Twitter データセットのクラスタリング

Twitter から抽出されたデータを理解し、データ構造を理解してから、K-Means クラスタリング アルゴリズムを実行します。教師なし処理とデータ フローを使用した手順は次のとおりです。

1. すべてのツイート ファイルをデータフレームに結合します。

2. ツイートを解析し、ストップワードを削除し、絵文字を抽出し、URL を抽出し、最後に単語を正規化します (例: 小文字に変換、句読点と数字を削除)。

3. 特徴抽出には次の手順が含まれます。

∞ トークン化: ツイートのテキストを個々の単語またはトークンに解析します

∞ TF-IDF: TF-IDFアルゴリズムを適用してテキストトークンから特徴ベクトルを作成する

∞ハッシュTF-IDF:ハッシュ関数を適用したTF-IDF

4. K-Means クラスタリング アルゴリズムを実行します。

5. K-Meansクラスタリングの結果を評価する:

∞ ツイートのメンバーシップとクラスタリング結果の定義

∞ 多次元尺度法とPCAアルゴリズムを使用して2次元への次元削減分析を実行する

∞ プロットクラスター

6. 組立ライン:

∞ 関連クラスタリングのK値の数を調整する

∞ モデルコストの測定

∞ 最適化されたモデルを選択する

Twitter データセットに Scikit-Learn を適用する

Python には独自の Scikit-Learn 機械学習ライブラリがあり、これは最も信頼性が高く、直感的で堅牢なツールの 1 つです。 Pandas と Scikit-Learn を使用して前処理と教師なし学習を実行します。 Spark MLlib を使用してクラスタリングを実行する前に、Scikit-Learn を使用してデータのサンプルを調べると役立ちます。ここに 7,540 件のツイートがミックスされています。Apache Spark、Python、次期大統領選挙 (ヒラリー クリントンとドナルド)、ファッション関連のツイート、レディー ガガとジャスティン ビーバーの音楽に関するツイートが含まれています。Twitter データセットで Scikit-Learn を使用し、K-Means クラスタリング アルゴリズムを実行しました。

まず、サンプル データを Pandas データフレームに読み込みます。

  1. pandasをpdとしてインポートする
  2. csv_in = 'C:\\Users\\Amit\\Documents\\IPython Notebooks\\AN00_Data\\ unq_tweetstxt.csv' 
 
  3. twts_df01 = pd.read_csv(csv_in、sep = ';' 、エンコーディング = 'utf-8' )
  4. [24]では
  5. csv(csv_in, sep = ';' , エンコーディング = 'utf-8' )
  6. [24]では
  7. twts_df01.count ()関数
  8. アウト[24]:
  9. 無名: 0 7540
  10. id 7540
  11. 作成日時 7540
  12. ユーザーID 7540
  13. ユーザー名 7538
  14. ツイートテキスト 7540
  15. データ型: int64
  16.  
  17. #
  18. # ツイートのテキストを分析する
  19. #
  20. [82]では
  21.  
  22. twtstxt_ls01[6910:6920]
  23. アウト[82]:
  24. [ 'RT @deroach_Ismoke: 私は #hilaryclinton に投票しません http://t.co/jaZZpcHkkJ'
  25. 「RT @AnimalRightsJen: #HilaryClinton バーニー・サンダースとドナルド・トランプの共通点は何ですか?: 彼はこれまでのところ、… http://t.co/t2YRcGCh6…」
  26. 「ビルが他の女とヤっていた理由は分かるよ……つまり
  27. 彼がどんな人結婚している見てください.....\n@HilaryClinton'、
  28. 「#ヒラリー・クリントン バーニー・サンダースとドナルド・トランプの共通点は何でしょうか?: これまでのところ、彼は… http://t.co/t2YRcGCh67 #Tcot #UniteBlue」 ]

まず、ツイートのテキストから特徴を抽出し、10,000 個の特徴と英語のストップワードを含む TF-IDF ベクター化ツールを使ってデータセットをベクトル化します。

  1. [37]では
  2.  
  3. print( "スパースベクトル化を使用してトレーニングデータセットから特徴を抽出します" )
  4. t0 =時間()
  5. スパースデータを使用してトレーニングデータセットから特徴を抽出する
  6. ベクトライザー
  7. [38]では
  8.  
  9. ベクターライザー = TfidfVectorizer(max_df=0.5, max_features=10000,
  10. min_df=2、stop_words= 'english' 、use_idf= True )
  11. X = ベクターライザー.fit_transform(twtstxt_ls01)
  12. #
  13. #出力   TFIDF特徴ベクトル化
  14. #
  15. print( "%fs で完了しました" % ( time () - t0))
  16. print( "n_samples: %d, n_features: %d" % X.shape)
  17. 印刷()
  18. 5.232165秒完了
  19. n_サンプル: 7540、n_特徴: 6638

データセットは 6638 個の特徴を持つ 7540 個のサンプルに分割され、K-Means クラスタリング アルゴリズムのスパース マトリックスを形成します。初期選択は 7 個のクラスターで、反復は最大 100 回です。

  1. [47]では
  2.  
  3. km = KMeans(n_clusters=7, init= 'k-means++' , max_iter=100, n_init=1,
  4. 詳細=1)
  5.  
  6. print( "%s によるスパースデータのクラスタリング" % km)
  7. t0 =時間()
  8. km.fit(X)
  9. print( "%0.3fs で完了しました" % ( time () - t0))
  10.  
  11. KMeans(copy_x= True 、init= 'k-means++' 、max_iter=100、n_clusters=7、n_init=1、によるスパースデータのクラスタリング
  12. n_jobs=1、事前計算距離= 'auto' 、ランダム状態=なし、
  13. 許容誤差=0.0001、詳細度=1)
  14. 初期化完了
  15. 反復 0、慣性 13635.141
  16. 反復1、慣性6943.485
  17. 反復2、慣性6924.093
  18. 反復3、慣性6915.004
  19. 反復4、慣性6909.212
  20. 反復5、慣性6903.848
  21. 反復6、慣性6888.606
  22. 反復7、慣性6863.226
  23. 反復8、慣性6860.026
  24. 反復9、慣性6859.338
  25. 反復10、慣性6859.213
  26. 反復11、慣性6859.102
  27. 反復12、慣性6859.080
  28. 反復13、慣性6859.060
  29. 反復14、慣性6859.047
  30. 反復15、慣性6859.039
  31. 反復16、慣性6859.032
  32. 反復17、慣性6859.031
  33. 反復18、慣性6859.029
  34. 反復18収束
  35. 1.701秒完了

18 回の反復後、K-Means クラスタリング アルゴリズムは収束しました。対応するキーワードに基づく 7 つのクラスターの結果を見てみましょう。クラスター 0 と 6 は、ジャスティン ビーバーとレディー ガガに関連する、音楽とファッションに関するツイートです。

クラスター 1 と 5 は、ドナルド トランプとヒラリー クリントンの米国大統領選挙に関連するツイートです。クラスター 2 と 3 は、私たちが関心を持っている Apache Spark と Python です。クラスター 4 には、タイに関連するツイートが含まれています。

  1. #
  2. #クラスターごとに上位の用語を調査する
  3. #
  4.  
  5. [49]では
  6.  
  7. print( "クラスターごとの上位用語: " )
  8. order_centroids = km.cluster_centers_.argsort()[:, ::-1]
  9. 用語 = vectorizer.get_feature_names()
  10. iが範囲(7)内にある場合:
  11. print( "クラスター %d:" % i, end = '' )
  12. order_centroids[i, :20]内のindの場合:
  13. print( ' %s' % 用語[ind], end = '' )
  14. 印刷()
  15.  
  16. クラスターごとの上位用語:
  17. クラスター 0: ジャスティンビーバー 愛 意味 RT フォロー ありがとう こんにちは https
  18. whatdoyoumean ビデオを聞きたい whatdoyoumeanviral rorykramer 幸せ lol 人を夢見させる justin
  19. クラスター 1: donaldtrump hilaryclinton rt https trump2016
  20. realdonaldtrump トランプ gop amp justinbieber クリントン大統領 メール oy8ltkstze tcot好きバーニーサンダース ヒラリー 人々 メール
  21. クラスター 2: ビッグデータ、Apache、Spark、Hadoop、分析、RT、Spark、トレーニング、チェンナイ、IBM、データサイエンス、Apache、処理、Cloudera、MapReduce、データ、SAP、https、Vora、変換、開発
  22. クラスター 3: apachespark python https rt spark data amp databricks using new learn hadoop ibm big apache continuumio bluemix learning join   開ける 
  23. クラスター 4: ernestsgantt simbata3 jdhm2015 elsahel12 phuketdailynews dreamintentions beyhiveinfrance almtorta18 civipartnership 9_a_6
  24. 25whu72ep0 k7erhvu7wn fdmxxxcm3h osxuh2fxnt 5o5rmb0xhp jnbgkqn0dj ovap57ujdh dtzsz3lb6x サニーサイ12345 sdcvulih6g
  25. クラスター 5: トランプ ドナルド ドナルドトランプ スターバックス トランプ引用
  26. trumpforpresident oy8ltkstze https zfns7pxysx silly goy stump trump2016 ニュース jeremy coffee corbyn ok7vc8aetz rt tonight
  27. クラスター 6: ladygaga gaga lady rt https love follow horror cd story ahshotel american japan hotel human trafficking music fashion diet queen ahs

グラフを描いて結果を視覚化します。 6638 個の特徴の 7540 個のサンプルがあるため、多次元で視覚化することは困難です。そこで、MDS アルゴリズムを使用して次元を削減します。

  1. matplotlib.pyplot をpltとしてインポートします。
  2. matplotlib をmplとしてインポートする
  3. sklearn.manifoldからMDS をインポートします
  4.  
  5. MDS()
  6.  
  7. #
  8. #クラスターをプロットするため、 MDSを2次元(コンポーネント)縮小します。
  9. #
  10. mds = MDS(n_components=2、非類似度= "事前計算済み" 、random_state=1)
  11.  
  12. pos = mds.fit_transform(dist) # 形状 (n_components, n_samples)
  13.  
  14. xs, ys = pos[:, 0], pos[:, 1]
  15.  
  16. [67]では
  17.  
  18. #
  19. #辞書を使用してクラスターごとに色を設定する
  20. #
  21. cluster_colors = {0: '#1b9e77' 、1: '#d95f02' 、2: '#7570b3' 、3: '#e7298a' 、4: '#66a61e' 、5: '#9990b3' 、6: '#e8888a' }
  22.  
  23. #
  24. #辞書を使用してクラスター名を設定する
  25. #
  26. cluster_names = {0: '音楽、ポップ' ,
  27. 1: 「米国政治、選挙」
  28. 2: 「ビッグデータ、スパーク」
  29. 3: 「スパーク、パイソン」
  30. 4: 「タイ」
  31. 5: 「米国政治、選挙」
  32. 6: 「ミュージック、ポップ
  33. [115]では
  34. #
  35. # matplotlib プロットをインラインで表示するipythonマジック
  36. #
  37. %matplotlib インライン
  38.  
  39. #
  40. # MDS結果、クラスター番号および 
  41. 表示されるツイートのテキスト
  42. #
  43. df = pd.DataFrame(dict(x=xs, y=ys, ラベル=クラスター, txt=twtstxt_ls02_
  44. utf8)
  45. ix_start = 2000
  46. ix_stop = 2050
  47. df01 = df[ix_start:ix_stop]
  48.  
  49. print(df01[[ 'ラベル' , 'txt' ]])
  50. 印刷(len(df01))
  51. 印刷()
  52.  
  53. グループ  クラスター
  54.  
  55. グループ = df.groupby( 'ラベル' )
  56. groups01 = df01.groupby( 'ラベル' )
  57.  
  58. #プロットを設定する
  59.  
  60. 図、ax = plt.subplots(図サイズ=(17, 10))
  61. 軸マージン(0.05)
  62.  
  63. #
  64. # プロットオブジェクトを構築する
  65. #
  66. のために  名前グループ  グループ01:
  67. ax.plot(グループ.x、グループ.y、 マーカー= 'o' 、 線種= '' 、 ms=12、
  68. label=cluster_names[名前]、color=cluster_colors[名前]、
  69. mec = 'なし' )
  70. ax.set_aspect( '自動' )
  71. ax.tick_params(\
  72. axis= 'x' 、# x軸設定
  73. which = '両方' 、#
  74. 下 = 'オフ' 、#
  75. = 'オフ' 、#
  76. ラベルボトム = 'オフ' )
  77. ax.tick_params(\
  78. axis= 'y' 、# y軸設定
  79. which = '両方' 、#
  80. = 'オフ' 、#
  81. = 'オフ' 、#
  82. labelleft = 'オフ' )
  83.  
  84. ax.legend(ポイント数=1) #
  85. #
  86. #ツイートテキストx,y位置ラベルを追加する
  87. #
  88. i が範囲(ix_start、ix_stop)の場合:
  89. ax.text(df01.ix[i][ 'x' ], df01.ix[i][ 'y' ], df01.ix[i][ 'txt' ],
  90. サイズ= 10)
  91.  
  92. plt.show() # プロットを表示する
  93.  
  94.  
  95. ラベルテキスト
  96. 2000 2 b 'RT @BigDataTechCon: '  
  97. 2001 3 b 「@4Quant のプレゼンテーション」  
  98. 2002 2 b 「カサンドラサミット201」  

以下は、ビッグデータと Spark を表す青い点で表されたクラスター 2 と、Spark と Python を表す赤い点で表されたクラスター 3 のグラフと、関連するツイートのサンプルです。

Scikit-Learn を使用してデータに関する優れた洞察をいくつか調べたので、Twitter データセットで Spark MLlib を実行することに集中できます。

データセットの前処理

データセットに対してクラスタリング アルゴリズムを実行する準備をするために、ここでは特徴抽出とエンジニアリングに焦点を当てます。 Spark コンテキストをインスタンス化し、Twitter データセットを Spark データフレームに読み込みます。次に、ツイートのテキスト データをトークン化し、トークンにハッシュ頻度アルゴリズムを適用し、最後に逆ドキュメント頻度アルゴリズムを適用してデータを再スケールします。コードは次のとおりです。

  1. [3]では
  2. #
  3. # Panda DFcsvを読み込む
  4. #
  5. #
  6. pandasをpdとしてインポートする
  7. csv_in = '/home/an/spark/spark-1.5.0-bin-hadoop2.6/examples/AN_Spark/data/unq_tweetstxt.csv'  
  8. pddf_in = pd.read_csv(csv_in、index_col=なし、header=0、sep= ';' 、encoding= 'utf-8' )
  9.  
  10. [4]では
  11.  
  12. sqlContext = SQLContext(sc)
  13.  
  14. [5]では
  15.  
  16. #
  17. # Panda DF をSpark DF変換する
  18. #
  19.  
  20. spdf_02 = sqlContext.createDataFrame(pdf_in[[ 'id' , 'user_id' , 'user_name' , 'tweet_text' ]])
  21.  
  22. [8]では
  23.  
  24. spdf_02.表示()
  25.  
  26. [7]では
  27. spdf_02.テイク(3)
  28.  
  29. アウト[7]:
  30.  
  31. [Row(id=638830426971181057, user_id=3276255125, user_name=u '真の平等' , tweet_text=u 'ernestsgantt: BeyHiveInFrance: 9_A_6:dreamintentions: elsahel12: simbata3: JDHM2015: almtorta18:dreamintentions:\u2026 http://t.co/VpD7FoqMr0' ),
  32. 行(id=638830426727911424、user_id=3276255125、user_name=u' True  
  33. 平等', tweet_text=u' ernestsgantt: BeyHiveInFrance:
  34. PhuketDailyNews: dreamintentions: elsahel12: simbata3: JDHM2015:almtorta18: CiviPa\u2026 http://t.co/VpD7FoqMr0'),
  35. 行(id=638830425402556417、user_id=3276255125、user_name=u' True  
  36. 平等', tweet_text=u' ernestsgantt: BeyHiveInFrance: 9_A_6:
  37. ernestsgantt: elsahel12: simbata3: JDHM2015: almtorta18:
  38. CiviPartnership: dr_u2026 http://t.co/EMDOn8chPK')]
  39.  
  40. [9]では
  41.  
  42. pyspark.ml.featureからHashingTF、IDF、Tokenizer をインポートします
  43.  
  44. [10]では
  45.  
  46. #
  47. # tweet_textをトークン化する
  48. #
  49. tokenizer = Tokenizer(inputCol= "tweet_text" 、outputCol= "tokens" )
  50. トークンデータ = tokenizer.transform(spdf_02)
  51.  
  52. [11]では
  53.  
  54. トークンデータ.take(1)
  55.  
  56. アウト[11]:
  57.  
  58. [Row(id=638830426971181057, user_id=3276255125, user_name=u '真の平等' , tweet_text=u 'ernestsgantt: BeyHiveInFrance:9_A_6: dreamintentions: elsahel12: simbata3: JDHM2015:almtorta18: dreamintentions:\u2026 http://t.co/VpD7FoqMr0' ,
  59. トークン=[u 'ernestsgantt:' , u 'beyhiveinfrance:' , u '9_a_6:' ,
  60. u 'dreamintentions:' 、 u 'elsahel12:' 、 u 'simbata3:' 、 u 'jdhm2015:' 、u 'almtorta18:' 、 u 'dreamintentions:\u2026' 、 u 'http://t.co/vpd7foqmr0' ])]
  61.  
  62. [14]では
  63. #
  64. #トークンハッシュTFを適用する
  65. #
  66. hashingTF = HashingTF(入力列 = "トークン" 、出力列 = "rawFeatures" 、numFeatures = 2000)
  67. 機能データ = hashingTF.transform(トークンデータ)
  68.  
  69. [15]では
  70.  
  71. 機能データ.take(1)
  72.  
  73. アウト[15]:
  74.  
  75. [Row(id=638830426971181057, user_id=3276255125, user_name=u '真の平等' , tweet_text=u 'ernestsgantt: BeyHiveInFrance:9_A_6: dreamintentions: elsahel12: simbata3: JDHM2015:almtorta18: dreamintentions:\u2026 http://t.co/VpD7FoqMr0' ,
  76. トークン=[u 'ernestsgantt:' , u 'beyhiveinfrance:' , u '9_a_6:' ,
  77. u 'dreamintentions:' 、 u 'elsahel12:' 、 u 'simbata3:' 、 u 'jdhm2015:' 、u 'almtorta18:' 、 u 'dreamintentions:\u2026' 、 u 'http://t.co/vpd7foqmr0' ],
  78. rawFeatures = SparseVector(2000, {74: 1.0, 97: 1.0, 100: 1.0, 160: 1.0,185: 1.0, 742: 1.0, 856: 1.0, 991: 1.0, 1383: 1.0, 1620: 1.0}))]
  79.  
  80. [16]では
  81.  
  82. #
  83. # IDFを生の特徴適用しデータを再スケールする
  84. #
  85. idf = IDF(inputCol= "rawFeatures" 、outputCol= "features" )
  86. idfモデル = idf.fit(特徴データ)
  87. 再スケールされたデータ = idfModel.transform(featuresData)
  88.  
  89. rescaledData内の特徴について。select ( "features" ) .take (3):
  90. 印刷(機能)
  91.  
  92. [17]では
  93.  
  94. 再スケールされたデータ.take(2)
  95.  
  96. アウト[17]:
  97.  
  98. [Row(id=638830426971181057, user_id=3276255125, user_name=u '真の平等' , tweet_text=u 'ernestsgantt: BeyHiveInFrance:9_A_6: dreamintentions: elsahel12: simbata3: JDHM2015:almtorta18: dreamintentions:\u2026 http://t.co/VpD7FoqMr0' ,
  99. トークン=[u 'ernestsgantt:' , u 'beyhiveinfrance:' , u '9_a_6:' ,
  100. u 'dreamintentions:' 、 u 'elsahel12:' 、 u 'simbata3:' 、 u 'jdhm2015:' 、u 'almtorta18:' 、 u 'dreamintentions:\u2026' 、 u 'http://t.co/vpd7foqmr0' ],
  101. rawFeatures = SparseVector(2000, {74: 1.0, 97: 1.0, 100: 1.0, 160: 1.0, 185: 1.0, 742: 1.0, 856: 1.0, 991: 1.0, 1383: 1.0, 1620: 1.0}),
  102. 特徴 = SparseVector(2000, {74: 2.6762, 97: 1.8625, 100: 2.6384, 160:2.9985, 185: 2.7481, 742: 5.5269, 856: 4.1406, 991: 2.9518, 1383:4.694, 1620: 3.073})),
  103. 行(id=638830426727911424、user_id=3276255125、user_name=u' True  
  104. 平等', tweet_text=u' ernestsgantt: BeyHiveInFrance:
  105. PhuketDailyNews: dreamintentions: elsahel12: simbata3:
  106. JDHM2015: almtorta18: CiviPa_u2026 http://t.co/VpD7FoqMr0',
  107. トークン=[u 'ernestsgantt:' , u 'beyhiveinfrance:' , u 'phuketdailynews:' ,u 'dreamintentions:' , u 'elsahel12:' , u 'simbata3:' , u 'jdhm2015:' ,u 'almtorta18:' , u 'civipa\u2026' , u 'http://t.co/vpd7foqmr0' ],
  108. rawFeatures = SparseVector(2000, {74: 1.0, 97: 1.0, 100: 1.0, 160: 1.0, 185: 1.0, 460: 1.0, 987: 1.0, 991: 1.0, 1383: 1.0, 1620: 1.0}),
  109. 特徴 = SparseVector(2000, {74: 2.6762, 97: 1.8625, 100: 2.6384,160: 2.9985, 185: 2.7481, 460: 6.4432, 987: 2.9959, 991: 2.9518, 1383:4.694, 1620: 3.073}))]
  110.  
  111. [21]では
  112.  
  113. rs_pddf = 再スケールされたData.toPandas()
  114.  
  115. [22]では
  116.  
  117. rs_pdf.count ()関数
  118.  
  119. アウト[22]:
  120.  
  121. id 7540
  122. ユーザーID 7540
  123. ユーザー名 7540
  124. ツイートテキスト 7540
  125. トークン 7540
  126. 生の特徴 7540
  127. 機能 7540
  128. データ型: int64
  129.  
  130.  
  131. [27]では
  132.  
  133. feat_lst = rs_pdf.features.tolist() 関数
  134.  
  135. [28]では
  136. feat_lst[:2]
  137.  
  138. アウト[28]:
  139.  
  140. [SparseVector(2000, {74: 2.6762, 97: 1.8625, 100: 2.6384, 160: 2.9985,185: 2.7481, 742: 5.5269, 856: 4.1406, 991: 2.9518, 1383: 4.694, 1620:
  141. 3.073})、
  142. スパースベクトル(2000, {74: 2.6762, 97: 1.8625, 100: 2.6384, 160: 2.9985,185: 2.7481, 460: 6.4432, 987: 2.9959, 991: 2.9518, 1383: 4.694, 1620:3.073})]

クラスタリングアルゴリズムを実行する

Twitter データセットに対してラベルなしツイートとして K-Means アルゴリズムを実行し、Apache Spark ツイートがクラスターを形成するかどうかを確認します。 前の手順に従って、TF-IDF の特徴のスパース ベクトルが RDD に変換され、Spark MLlib プログラムに入力されます。 K-Means モデルを 5 つのクラスターと 10 回の反復で初期化します。

  1. [32]では
  2.  
  3. pyspark.mllib.clusteringからKMeans、KMeansModel をインポートします
  4. numpyから配列をインポート
  5. 数学からインポートsqrt
  6.  
  7. [34]では
  8.  
  9. 負荷  データを解析する
  10.  
  11.  
  12. in_Data = sc.parallelize(feat_lst)
  13.  
  14. [35]では
  15.  
  16. in_Data.take(3)
  17.  
  18. アウト[35]:
  19.  
  20. [SparseVector(2000, {74: 2.6762, 97: 1.8625, 100: 2.6384, 160: 2.9985,185: 2.7481, 742: 5.5269, 856: 4.1406, 991: 2.9518, 1383: 4.694, 1620:3.073}),
  21. スパースベクトル(2000, {74: 2.6762, 97: 1.8625, 100: 2.6384, 160: 2.9985,185: 2.7481, 460: 6.4432, 987: 2.9959, 991: 2.9518, 1383: 4.694, 1620:3.073}),
  22. スパースベクトル(2000, {20: 4.3534, 74: 2.6762, 97: 1.8625, 100: 5.2768,185: 2.7481, 856: 4.1406, 991: 2.9518, 1039: 3.073, 1620: 3.073, 1864:4.6377})]
  23.  
  24. [37]では
  25.  
  26. in_Data.count ()関数
  27.  
  28. アウト[37]:
  29.  
  30. 7540
  31.  
  32. [38]では
  33.  
  34. # モデルを構築する(データをクラスタ化する)
  35.  
  36. clusters = kmeans.train(in_data、5、maxiterations = 10、
  37. runs = 10、initializationMode = "ランダム"
  38.  
  39. [53]
  40.  
  41. セット内で計算しクラスタリングを評価します    四角いエラー
  42.  
  43. defエラー(ポイント):
  44. center = clusters.centers [clusters.predict(point)]]
  45. return sqrt( sum ([x ** 2 for x in (point -center)])))
  46.  
  47. wssse = in_data.map(lambda point:error(point))。reduce(lambda x、y:x + y)
  48. print( "set sum of Squared error =" + str(wssse))

モデルと結果の評価

クラスタリングアルゴリズムをチューニングする1つの方法は、クラスターの数を変更し、これらのクラスターを確認して、現在のクラスタリング結果の感触を取得することです。

  1. [43]
  2.  
  3. cluster_membership = in_data.map(lambda x:clusters.predict(x))
  4.  
  5. [54]
  6. cluster_idx = cluster_membership.zipwithindex()
  7.  
  8. [55]
  9.  
  10. タイプ(cluster_idx)
  11.  
  12. Out [55]:
  13.  
  14. pyspark.rdd.pipelinedrdd
  15.  
  16. [58]
  17.  
  18. cluster_idx.take(20)
  19.  
  20. Out [58]:
  21.  
  22. [(3、0)、
  23. (3、1)、
  24. (3、2)、
  25. (3、3)、
  26. (3、4)、
  27. (3、5)、
  28. (1、6)、
  29. (3、7)、
  30. (3、8)、
  31. (3、9)、
  32. (3、10)、
  33. (3、11)、
  34. (3、12)、
  35. (3、13)、
  36. (3、14)、
  37. (1、15)、
  38. (3、16)、
  39. (3、17)、
  40. (1、18)、
  41. (1、19)]
  42.  
  43. [59]
  44.  
  45. cluster_df = cluster_idx.todf()
  46.  
  47. [65]
  48. pddf_with_cluster = pd.concat([pddf_in、cluster_pddf]、axis = 1)
  49.  
  50. [76]
  51.  
  52. pddf_with_cluster._1.unique ()
  53.  
  54. Out [76]:
  55.  
  56. 配列([3、1、4、0、2])
  57.  
  58. [79]
  59.  
  60. pddf_with_cluster [pddf_with_cluster [ '_1' ] == 0] .head(10)
  61.  
  62. Out [79]:
  63. 無名:0 id created_at user_id user_name tweet_text _1 _2
  64. 6227 3 642418116819988480 FRI SEP 11 19:23:09 +0000 2015
  65. 49693598 ajinkya kale rt @bigdata:分散マトリックス計算
  66. I ... 0 6227
  67. 6257 45 642391207205859328 FRI SEP 11 17:36:13 +0000 2015
  68. 937467860 Angela Bassa [auto]私は読んでいます""分散マトリックス
  69. コンピューター... 0 6257
  70. 6297 119 642348577147064320 FRI SEP 11 14:46:49 +0000
  71. 2015 18318677 ben lorica分散マトリックス計算@
  72. Apachespar ... 0 6297
  73. [80]
  74.  
  75. pddf_with_cluster [pddf_with_cluster [ '_1' ] == 1] .head(10)
  76.  
  77. out [80]:
  78. 無名:0 id created_at user_id user_name tweet_text _1
  79. _2
  80. 6 6 638830419090079746 TUE SEP 01 21:46:55 +0000 2015
  81. 2241040634 Massimo carrisi python:python:\ xa0削除します 
  82. 文字列?
  83. 15 17 638830380578045953 TUE SEP 01 21:46:46 +0000 2015
  84. 57699376 Rafael Monnerat RT @ramalhoorg:表示する写真はありません
  85. 流fluent ... 115
  86. 18 41 638830280988426250 TUE SEP 01 21:46:22 +0000 2015
  87. 951081582 Jack Baldwin RT @cloudaus :私たちは3/4です
  88. swcarpen ... 1 18
  89. 19 42 638830276626399232 TUE SEP 01 21:46:21 +0000 2015
  90. 6525302正面林pynamodb #aws #dynamodb #python
  91. http:// ... 1 19
  92. 20 43 638830213288235008 TUE SEP 01 21:46:06 +0000 2015
  93. 3153874869 Baltimore Python Flexx:Python UiはWeb基づいて削除されました
  94. テクノロジー... 1 20
  95. 21 44 638830117645516800 TUE SEP 01 21:45:43 +0000 2015
  96. 48474625ラジオフリーデナリうーん、emerge - depcleanが削除したい 
  97. Somethi ... 1 21
  98. 22 46 638829977014636544 TUE SEP 01 21:45:10 +0000 2015
  99. 154915461 Luciano Ramalho Noite deautógrafosは流fluentPython no no no  
  100. ガロア... 122
  101. 23 47 638829882928070656 TUE SEP 01 21:44:47 +0000 2015
  102. 917320920 bsbafflesbrains @danswright Harperチャネリングモンティ
  103. Python
  104. 24 48 638829868679954432 TUE SEP 01 21:44:44 +0000 2015
  105. 134280898 Lannick Technology RT @sergeykalnish:私は#hiring:
  106. シニアバックE ... 1 24
  107. 25 49 638829707484508161 TUE SEP 01 21:44:05 +0000 2015
  108. 2839203454 Joshua Jones RT @lindseypelas:生き残ったMonty Python
  109. FL ... 1 25
  110. [81]
  111.  
  112. pddf_with_cluster [pddf_with_cluster [ '_1' ] == 2] .head(10)
  113.  
  114. Out [81]:
  115. 無名:0 id created_at user_id user_name tweet_text _1
  116. _2
  117. 7280 688 639056941592014848水曜日02 12:47:02 +0000 2015
  118. 2735137484 chris本当ゲイのアイコン@ladygaga @madonna @...
  119. 2 7280
  120. [82]
  121.  
  122. pddf_with_cluster [pddf_with_cluster [ '_1' ] == 3] .head(10)
  123.  
  124. Out [82]:
  125. 無名:0 id created_at user_id user_name tweet_text _1
  126. _2
  127. 0 0 638830426971181057 TUE SEP 01 21:46:57 +0000 2015
  128. 3276255125真の平等アーネストガント:beyhiveinfrance:9_a_6:
  129. Dreamint ... 3 0
  130. 1 1 638830426727911424 TUE SEP 01 21:46:57 +0000 2015
  131. 3276255125真の平等アーネストガント:beyhiveinfrance:
  132. phuketdailynews ... 3 1
  133. 2 2 638830425402556417 TUE SEP 01 21:46:56 +0000 2015
  134. 3276255125真の平等アーネストガント:beyhiveinfrance:9_a_6:
  135. ernestsg ... 3 2
  136. 3 3 638830424563716097 TUE SEP 01 21:46:56 +0000 2015
  137. 3276255125真の平等アーネストガント:beyhiveinfrance:
  138. phuketdailynews ... 3 3
  139. 4 4 6388304422256816132 TUE SEP 01 21:46:56 +0000 2015
  140. 3276255125真の平等アーネストガント:elsahel12:9_a_6:
  141. 夢の意図... 3 4
  142. 5 5 6388304220159655936 TUE SEP 01 21:46:55 +0000 2015
  143. 3276255125真の平等アーネストガント:beyhiveinfrance:
  144. phuketdailynews ... 3 5
  145. 7 7 638830418330980352 TUE SEP 01 21:46:55 +0000 2015
  146. 3276255125真の平等アーネストガント:elsahel12:9_a_6:
  147. 夢の意図... 3 7
  148. 8 8 638830397648822272 TUE SEP 01 21:46:50 +0000 2015
  149. 3276255125真の平等アーネストガント:beyhiveinfrance:
  150. phuketdailynews ... 3 8
  151. 9 9 638830395375529984 TUE SEP 01 21:46:49 +0000 2015
  152. 3276255125真の平等アーネストガント:elsahel12:9_a_6:
  153. 夢の意図... 3 9
  154. 10 10 638830392389177344 TUE SEP 01 21:46:49 +0000 2015
  155. 3276255125真の平等アーネストガント:beyhiveinfrance:
  156. phuketdailynews ... 3 10
  157. [83]
  158.  
  159. pddf_with_cluster [pddf_with_cluster [ '_1' ] == 4] .head(10)
  160.  
  161. Out [83]:
  162. 無名:0 id created_at user_id user_name tweet_text _1
  163. _2
  164. 1361 882 642648214454317056 SAT SEP 12 10:37:28 +0000 2015
  165. 27415756 Raymond Enisuoh La La choosen for US 2024オリンピック入札 -
  166. LA2016参照... 4 1361
  167. 1363 885 64264784874583168 SAT SEP 12 10:36:01 +0000 2015
  168. 27415756 Raymond Enisuoh刑務所参照:https://t.co/x3ekaexefi……
  169. ……41363
  170. 5412 11 640480770369286144 SUN SEP 06 11:04:49 +0000 2015
  171. 3242403023ドナルドトランプ2016 "igiboooy! @ starbucks https:// t。
  172. CO/97WDL ... 4 5412
  173. 5428 27 640477140660518912 SUN SEP 06 10:50:24 +0000 2015
  174. 3242403023 Donald Trump 2016 " @ Starbucks https://t.co/
  175. WSEYFIEFK7 "-D ... 4 5428
  176. 5455 61 640469542272110592 SUN SEP 06 10:20:12 +0000 2015
  177. 3242403023 Donald Trump 2016 "Starbucks @ starbucks mamplaza
  178. https://t.co ... 4 5455
  179. 5456 62 640469541370372096 SUN SEP 06 10:20:12 +0000 2015
  180. 3242403023ドナルドトランプ2016 "aaahhhカボチャスパイスラテ 
  181. 戻って、秋... 4 5456
  182. 5457 63 640469539524898817 SUN SEP 06 10:20:12 +0000 2015
  183. 3242403023 Donald Trump 2016 "RT Kayyleighferry:Oh My Goddd
  184. ハリー・ポッター... 45457
  185. 5458 64 640469537176031232 SUN SEP 06 10:20:11 +0000 2015
  186. 3242403023 Donald Trump 2016 "Starbucks https://t.co/3xyyxlwnkf
  187. 「 - ドナルド... 4 5458

サンプルのツイートを5つのクラスターにマッピングします

Pythonについて。クラスター2レディー・ガガについて。クラスター3タイのプーケットについて

ニュース。ドナルド・トランプについてクラスター4。

機械学習パイプラインを構築します

最適なパラメーターを最適化して最適な実行モデルを取得する場合、機能抽出、準備活動、トレーニング、テスト、予測アクティビティを組み合わせることができることを願っています。

Spark Mllibで強力な機械学習パイプラインを実装し、5行のコードで次のツイートを正確にキャプチャします。

Spark ML Pipelinesは、PythonのScikit-Learnに触発され、データが簡潔かつ継続的な変換で調整可能なモデルをすばやく公開する宣言的なステートメントを作成しました。

Spark2.1.0の開始:Sparkのインストールと使用

それはヒーローですか、それともクマですか?

Apache Spark Memory Management詳細な説明

Spark Performance Optimization Method — N Spark Data Tilt(Data Skew)を解くための姿勢

<<:  鄒聖龍が初めて人工知能について公に語り、荀雷の将来の計画が明らかにされた

>>:  NLPとナレッジグラフの統合

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

トランプ大統領は自動運転技術を承認せず、自動運転車は決して成功しないと述べている

最近、外国メディアは複数の情報筋の話として、トランプ大統領は自動運転技術を承認していないと報じた。ト...

...

AIがタンパク質構造を予測し、サイエンス誌とネイチャー誌の年間技術革新として掲載され、無限の可能性を秘めている

2021 年に AI 分野で最も画期的な賞を授与するとしたら、誰を選びますか? 「サイエンス」と「ネ...

機械学習は 5G ネットワークにどのように役立ちますか?

機械学習機械学習は、コンピューティング システムの能力の向上とデータの可用性の向上により、過去 10...

人工知能技術の成功と失敗を支える5つの中核要素

海外メディア(VentureBeat)によると、1980年代後半には、多くのスタートアップ企業、政府...

企業における機械学習: 次の 1 兆ドル規模の成長はどこから来るのでしょうか?

ハリー・ポッターの世界では、組分け帽子は生徒の行動履歴、好み、性格に関するデータを取得し、そのデータ...

エンタープライズ ネットワーク セキュリティにおける AI アプリケーションについてご存知ですか?

企業のセキュリティ システム開発のペースが加速するにつれて、より高度な新しいタイプのサイバー攻撃が出...

老黄が勝利! Nvidia H100の注文は24年待ち、マスク氏も黙っていられない

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

Googleはロボットを大規模な言語モデルの手と目として機能させ、タスクを16のアクションに分解して一度に完了させます。

大型モデルはロボット工学の分野でその地位を確立しました。 「飲み物をこぼしてしまいました。助けてくれ...

...

...

リアルすぎて怖い! Gen-2 の壮大なアップデート、手作りの 4K ハリウッド大作、Midjourney の夢の連携、CEO: クリエイティブ ソフトウェアの時代は終わった

動画生成AIが狂った!ランウェイとミッドジャーニーは、それぞれが究極の技を駆使して激しい戦いを繰り広...

給料の心配はやめましょう。これは今後 10 年間で最も収益性の高い業界であり、横になっているときでもお金を稼ぐことができます。

小米創始者の雷軍はかつて「風の吹き口に立てば豚でも飛べる」と言った。事実は往々にしてこの通りだ。人の...

自動運転によりシェアリングエコノミーは再び普及するでしょうか?

自動運転技術の開発は常に議論の的となっています。自動運転の将来に関して、避けて通れない話題が1つあり...

ボストンのロボットが話題になった後、別のヒューマノイドロボットがデビューした

10年以上前、テヘラン大学の研究者らは、Surenaと呼ばれる原始的なヒューマノイドロボットを発表し...