I.はじめに
K-手段は教師なし学習で、クラスタリングの問題が解決されます。Kは、Kクラスによって表される手段は中心を示し、あなたはこのアルゴリズムの性質を理解することができますが、中心点を見つけたとき、クラスタリングが終了すると、Kクラスの中心点を決定することです。
/ *労働、再現の著者果実を尊重してください、元のリンクを明記してください。* /
/ * https://www.cnblogs.com/jpcflyer/p/11117012.html * /
まず、あなたと私は、彼らがどのように分割することの結果に応じて3つのレベルに分けることにしたい、私は20アジアのサッカーがあると仮定し、シーンを考えますか?
二、K-手段作品
アジアサッカーのレベルが、あなたはまた、独自の判断であってもよいです。例えば、第一級のアジアのチームは誰?あなたは、イランや韓国を言うかもしれません。アジアの二流のチームはいますか?あなたはそれが中国であると言うかもしれません。それはアジアのサードチーム?あなたはベトナムを言うかもしれません。
実際には、これらはイラン、中国、その後、分割するために私たちの経験に頼っている、ベトナムでは、それは私たちのクラスのそれぞれの中心点で、三つのレベルの典型であると言うことができます。
だから、中心点Kクラスをどのように決定するか、戻ってきますか?私たちは、あなたが中心点を確認するとき、あなたは別のカテゴリに分かれて、他のサッカーチームからたどることができ、ランダムな割り当てを開始することができます。
これは、K平均中心的な考えはそう単純で直接的です。あなたが尋ねるかもしれません:あなたは中国のファーストクラスのチームを選択起動した場合、イランは韓国、間違った選択はどのように行うには、中心点で二流のチームは、第三チームですか?心配実際には、K-手段は自己修正のメカニズムを持っていない、一定の反復プロセスでは、中心点を修正します。全体の反復プロセスの中心点では、だけでなく、あなたが初期値を必要とする、一般的なアルゴリズムは、ランダムに初期の中心点を設定します。
まあ、私は-手段をKに来て、あなたに動作します要約:
初期点としてKクラスの中心点を選択し、点は一般にランダムデータセットから選択されます。
各点は、従って、Kのクラスを形成し、各クラスの中心点を再計算し、最も近いクラス中心点に割り当てられます。
クラスが変化しなくなるまで第二のステップが繰り返されるか、最大反復回数を設定することができ、この変更は限り反復の最大数は目的を達成するためにも、クラスの中心点かかわらず発生しましたが、。
第三に、クラスタリングにアジアのチームを行う方法
マシンデータのクラスの中心点を決定するために必要なので、私は次の表にランク2015年から2019年アジアのチームがコンパイルされます。
私はデータプロファイルを説明しましょう。
2019 FIFAの世界は2015年アジアカップのランキングにランク付けどこ実際のランキングです。2018年のワールドカップでは、多くのチームが決勝に入らなかった、唯一のチームの決勝を入力するには、実際のランキングを持っています。それはアジア予選12強いチームであれば、ランキングは40に設定されています。あなたがアジアの修飾子を入力しない場合は12の強いチームのランキングは50に設定されます。
上記のランク付けのために、我々は最初に行う必要があるデータの標準化です。I第一の値は[0,1]空間に正規化され、値の以下の表を得ました。
我々は、ランダムに選択した場合は、中国、日本、韓国は三つのクラスの中心点で、我々は、中心点からこれらのチームを見てする必要があります。
そこまでの距離を計算距離を計算するための多くの方法があると私はKNNアルゴリズムで約話しました。ユークリッド距離が距離を計算するための最も一般的な方法で、ここで私は、標準的な距離としてユークリッド距離を選択し、距離は中国、日本、韓国に別々に各チームのために計算され、その後、距離に応じた距離を分割します。私たちは、チームのほとんどを見ると、中国のチームが一緒にクラスター化されます。ここで私は、中国や中国ユークリッド距離ユークリッド距離0として、距離計算処理をコンパイルし、中国と日本は0.732003です。もし、中国、日本、韓国に基づいて、次の表のユークリッド距離の計算結果の3分類の中心点:
その後、我々はそれを計算する方法を、三つのクラスの中心点を再計算しますか?最も簡単な方法は、新しい中心点の距離に応じて平均し、チームの無料再配布距離を取り、その後、チームの分類に基づいて、中心点の位置を更新することです。この計算は、最後の反復は、(上記の計算を繰り返す:中心点を計算し、分類のため)されているれていない拡張もはや分類を変更するが、以下の結果を得ることができます。
だから私たちが見ることができる最初のエシュロン日本、韓国、イラン、サウジアラビア、オーストラリア、2番目の層は、中国、イラク、アラブ首長国連邦、ウズベキスタンであり、第三雁行カタール、タイ、ベトナム、オマーン、バーレーン、韓国、インドネシア、シリア、ヨルダン、クウェート、パレスチナ。
第四に、sklearnにK平均アルゴリズムを使用する方法
sklearn Pythonは関数が分割されている場合、sklearnは、分類、クラスタリング、回帰、次元削減、モデル選択と前処理機能を実現することができ、機械学習ツールライブラリです。ここでは使用sklearnクラスタリングライブラリであり、そのため次のように、特定のコードをキットを参照する必要があります。
1 から sklearn.cluster インポート関数kmeans
もちろん、K-手段は、ライブラリsklearn.cluster唯一ポリ、実際にそのような平均値シフト、DBSCAN、スペクトルクラスタリング(スペクトルクラスタリング)として、9 sklearn.clusterクラスタリング法の合計を設け、内側K-手段を備えますように。これらの異なるクラスタリング方法の原則とK-手段は、ここでは紹介しません。
我々はK-手段を作成する方法を見て:
1つの関数kmeans(n_clusters = 8、INIT = ' k平均++ '、n_init = 10、max_iter = 300、TOL = 0.0001、precompute_distancesの= ' 自動車'、冗長= 0、random_state =なし、copy_x =真、n_jobs = 1、アルゴリズム= ' オート')
:私たちは、作成されたK平均クラスの過程で、いくつかの主要なパラメータがあることがわかります
n_clusters:すなわち、K値は、一般的に、より良いクラスタリング効果を保証するために、K値のいくつかを試してみてくださいする必要があります。あなたは乱数K値を設定し、Kの最終値として最良のクラスタを選択することができます。
max_iter:最大反復回数、クラスタリングが収束することは困難である場合は、その後、反復の最大数がそれ以外の時間を実行するプログラムが非常に長くなることが、私たちはタイムリーなフィードバックの結果を受け取ることができます設定します。
n_init :初始化中心点的运算次数,默认是 10。程序是否能快速收敛和中心点的选择关系非常大,所以在中心点选择上多花一些时间,来争取整体时间上的快速收敛还是非常值得的。由于每一次中心点都是随机生成的,这样得到的结果就有好有坏,非常不确定,所以要运行 n_init 次, 取其中最好的作为初始的中心点。如果 K 值比较大的时候,你可以适当增大 n_init 这个值;
algorithm :k-means 的实现算法,有“auto” “full”“elkan”三种。一般来说建议直接用默认的"auto"。简单说下这三个取值的区别,如果你选择"full"采用的是传统的 K-Means 算法,“auto”会根据数据的特点自动选择是选择“full”还是“elkan”。我们一般选择默认的取值,即“auto” 。
在创建好 K-Means 类之后,就可以使用它的方法,最常用的是 fit 和 predict 这个两个函数。你可以单独使用 fit 函数和 predict 函数,也可以合并使用 fit_predict 函数。其中 fit(data) 可以对 data 数据进行 k-Means 聚类。 predict(data) 可以针对 data 中的每个样本,计算最近的类。
现在我们要完整地跑一遍 20 支亚洲球队的聚类问题。
1 # coding: utf-8 2 3 from sklearn.cluster import KMeans 4 5 from sklearn import preprocessing 6 7 import pandas as pd 8 9 import numpy as np 10 11 # 输入数据 12 13 data = pd.read_csv('data.csv', encoding='gbk') 14 15 train_x = data[["2019 年国际排名 ","2018 世界杯 ","2015 亚洲杯 "]] 16 17 df = pd.DataFrame(train_x) 18 19 kmeans = KMeans(n_clusters=3) 20 21 # 规范化到 [0,1] 空间 22 23 min_max_scaler=preprocessing.MinMaxScaler() 24 25 train_x=min_max_scaler.fit_transform(train_x) 26 27 # kmeans 算法 28 29 kmeans.fit(train_x) 30 31 predict_y = kmeans.predict(train_x) 32 33 # 合并聚类结果,插入到原数据中 34 35 result = pd.concat((data,pd.DataFrame(predict_y)),axis=1) 36 37 result.rename({0:u'聚类'},axis=1,inplace=True) 38 39 print(result)
运行结果:
1 国家 2019 年国际排名 2018 世界杯 2015 亚洲杯 聚类 2 3 中国 73 40 7 2 4 5 日本 60 15 5 0 6 7 韩国 61 19 2 0 8 9 伊朗 34 18 6 0 10 11 沙特 67 26 10 0 12 13 伊拉克 91 40 4 2 14 15 卡塔尔 101 40 13 1 16 17 阿联酋 81 40 6 2 18 19 乌兹别克斯坦 88 40 8 2 20 21 泰国 122 40 17 1 22 23 越南 102 50 17 1 24 25 阿曼 87 50 12 1 26 27 巴林 116 50 11 1 28 29 朝鲜 110 50 14 1 30 31 印尼 164 50 17 1 32 33 澳洲 40 30 1 0 34 35 叙利亚 76 40 17 1 36 37 约旦 118 50 9 1 38 39 科威特 160 50 15 1 40 41 巴勒斯坦 96 50 16 1
搜索关注微信公众号“程序员姜小白”,获取更新精彩内容哦。