chin2017-20200710
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[個人ページ>seminar-personal/chin2017]]
&br;
[[N班ゼミ>http://f-lab.mydns.jp/index.php?seminar-N-2020]]
|~目次|
|#contents|
&br;
*支部大会 [#r7ba9c19]
-題目:オープンデータの述語サジェストのための項目名のクラ...
-英語:A study on the clustering of item names for predic...
-概要:近年,新型コロナウイルスにより,台湾のオープンデー...
-[[電気・情報関係学会九州支部第73回連合大会>https://gakka...
-発表希望グループ1: 21 計算機応用
-発表希望グループ2: 22 人工知能
-発表希望グループ3: 15 情報通信
-
著者1: 陳 博 チン/ハク
電子メールアドレス: chinhaku204@gmail.com
所属名: 鹿児島大
-著者2: 泊 大貴 トマリ/ダイキ
電子メールアドレス: sc115092@ibe.kagoshima-u.ac.jp
所属名: 鹿児島大
-著者3: 程 芳 テイ/ホウ
電子メールアドレス: mc120040@ibe.kagoshima-u.ac.jp
所属名: 鹿児島大
-著者4: 渕田 孝康 フチダ/タカヤス
電子メールアドレス: fuchida@ibe.kagoshima-u.ac.jp
所属名: 鹿児島大
**参考資料 [#za3876ea]
-1,[[word2vecの原理について>https://www.jstage.jst.go.jp/...
-2,[[形態素分析>https://ipsj.ixsq.nii.ac.jp/ej/?action=re...
*ゼミより抜粋 [#w65cc953]
-&color(red){k-means法でやると違いがあるか?};
-&color(red){k-means++法は?};
-&color(red){他のクラスタも同様な傾向なのか?};
-&color(red){異なるクラスタ間の類似度の分布はどうなってい...
*進捗報告 [#xd8f9873]
**階層的クラスタリング [#paa1391d]
***他のクラスタも同様な傾向なのか? [#y109106a]
-[[距離関数の定義>https://qiita.com/obake_kaiware/items/3...
-式:
--&ref(chin2017-20200703/コサイン類似度.JPG,70%);
--コサイン類似度が 1 に近い ⟺ 2本のベクトルは同じ向きに近い
--コサイン類似度が −1 に近い ⟺ 2本のベクトルは逆向きに近い
***以下は3個以上の自治体に存在する項目名に対して:&ref(lab...
-クラスタ48(131個)を確認する
--抽出:&ref(label_average_cosine_50_cluter_2times_48only....
--計算するソースコード:&ref(cos_sim_for_48.py.txt);
--結果:&ref(cos_sim_all_for_48.csv);
--結果分析:&ref(cos_sim_all_for_48.xlsx);
--131*131=17161ペア(重複の場合を考慮せず:実際ペア数8515...
--分布図&ref(distribution_48.jpg);
-クラスタ46(65個)を確認する
--抽出:&ref(label_average_cosine_50_cluter_2times_46only....
--計算するソースコード:&ref(cos_sim_for_46.py.txt);
--結果:&ref(cos_sim_all_for_46.csv);
--結果分析:&ref(cos_sim_all_for_46.xlsx);
--65*65=4225ペア(重複の場合を考慮せず:実際ペア数2080ペア)
--分布図&ref(distribution_46.jpg);
-クラスタ25(38個)を確認する
--抽出:&ref(label_average_cosine_50_cluter_2times_25only....
--計算するソースコード:&ref(cos_sim_for_25.py.txt);
--結果:&ref(cos_sim_all_for_25.csv);
--結果分析:&ref(cos_sim_all_for_25.xlsx);
--38*38=1444ペア-38=1406(重複の場合を考慮せず:実際ペア数...
--分布図&ref(distribution_25.jpg);
&br;
***以下は4個以上の自治体に存在する項目名に対して:&ref(lab...
-クラスタ23(68個)を確認する
--抽出:&ref(label_average_cosine_50_cluter_3times_23only....
--結果:&ref(cos_sim_all_for_23.csv);
--結果分析:&ref(cos_sim_all_for_23.xlsx);
--68*68=4624ペア-64 /2(重複の場合を考慮せず:実際ペア数2...
--分布図
&ref(distribution_23.jpg);
-クラスタ44(68個)を確認する
--抽出:&ref(label_average_cosine_50_cluter_3times_44only....
--結果:&ref(cos_sim_all_for_44.csv);
--結果分析:&ref(cos_sim_all_for_44.xlsx);
--68*68=4624ペア-64 /2(重複の場合を考慮せず:実際ペア数2...
--分布図
&ref(distribution_44.jpg);
***異なるクラスタ間の類似度の分布はどうなっているか? [#p...
以下は4個以上の自治体に存在する項目名に対して
-クラスタ23(68個)と44(68個)を確認する
--抽出したデータ:&ref(label_average_cosine_50_cluter_3tim...
と&ref(label_average_cosine_50_cluter_3times_23only.csv);
--結果:&ref(cos_sim_all_for_23_44.csv);
--結果分析:&ref(cos_sim_all_for_23_44.xlsx);
--68*68=4624
--分布図
&ref(distribution_23_44.jpg);
-クラスタ16(30個)と31(33個)を確認する
--抽出したデータ:&ref(label_average_cosine_50_cluter_3tim...
と&ref(label_average_cosine_50_cluter_3times_31only.csv);
--計算するソースコード:&ref(cos_sim_for_16_31.py.txt);
--結果:&ref(cos_sim_all_for_16_31.csv);
--結果分析:&ref(cos_sim_all_for_16_31.xlsx);
--30*33=990
--分布図
&ref(distribution_16_31.jpg);
***結果について考察 [#dea52f08]
-妥当ではないクラスタが存在している
-クラスタリングをうまくいかない?
-原因として
--指定したクラスタ数に強制的クラスタリングを行った(乱暴...
---無関係の項目名も強制的に同じクラスタに入っている(クス...
---&color(red){そこで、最適なクススタ数を探す必要ではない...
--辞書?→軽く調べてみる
--クラスタリングのパラメータは大丈夫か?(前回で報告したs...
**[[k-means法>http://tech.nitoyon.com/ja/blog/2009/04/09/...
-教師なし学習の中でもとても有名なアルゴリズムの一つ
-概要:クラスタの平均を用い、与えられたクラスタ数k個に分...
-流れ:
1.各点にランダムにクラスタを割り当てる
2.クラスタの重心を計算する。
3.点のクラスタを、一番近い重心のクラスタに変更する
4.変化がなければ終了。変化がある限りは 2. に戻る。
-[[問題点>https://www.medi-08-data-06.work/entry/kmeans]]...
**[[k-means++>https://www.medi-08-data-06.work/entry/kmea...
-k-means++:k-meansの初期値問題を解消するため
--k-means++では中心の初期値を決める際に、すべての中心点ど...
-ソースコードは[[ここ>https://pythondatascience.plavox.in...
-[[詳細>https://colab.research.google.com/drive/13JWN6Mis...
-クラスタリング用データ:&ref(datasets_2times.csv);と&ref...
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
# データセットを読み込み
cust_df = pd.read_csv("datasets_2times.csv",header=None)
print(cust_df)
cust_array = np.array([cust_df[1].tolist(),cust_df[2].to...
cust_df[11].tolist(),cust_df[12].tolist(),cust_df[13].to...
cust_df[21].tolist(),cust_df[22].tolist(),cust_df[23].to...
cust_df[31].tolist(),cust_df[32].tolist(),cust_df[33].to...
cust_df[41].tolist(),cust_df[42].tolist(),cust_df[43].to...
], np.float32)
# 行列を転置
cust_array = cust_array.T
print(cust_array)
# クラスタ分析を実行 (クラスタ数=50)
pred = KMeans(n_clusters=50, init='k-means++',).fit_pred...
print(pred)
cust_df[51]=pred
print(cust_df)
cust_df.to_csv("k-means_2times_50.csv",index=False,encod...
***結果とクラスタの分布 [#scd9ece8]
-結果:&ref(k-means_2times_50.csv);と&ref(k-means_3times_...
-クラスタの分布1(3個以上の自治体の項目名に対して)
--&ref(k-means_2times_50.xlsx);
--分布図(縦棒):&ref(vertical_bar_kmeans_2times.jpg);
-クラスタの分布2(4個以上の自治体の項目名に対して)
--&ref(k-means_3times_50.xlsx);
--分布図(縦棒):&ref(vertical_bar_kmeans_3times.jpg);
***評価手法(クラスタ数を自動推定) [#qb4cb2a8]
-[[評価方法(評価指標)>https://qiita.com/deaikei/items/11a...
--1)エルボー法:クラスター数を変えてクラスタリングしたとき...
--[[2)シルエット分析法>https://irukanobox.blogspot.com/20...
---1から1の範囲の値
---&color(red){シルエット値が1に近く};、かつシルエット値...
--1)と2)の書いてみたソースコード:&ref(k-means_optimal_cl...
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_samples, silhouet...
#% matplotlib inline
from IPython.core.pylabtools import figsize
import matplotlib.pyplot as plt
def select_n_cluster(X,cluster_Num):
# クラスター数2~8を比べる
range_n_clusters = [i for i in range(2, cluster_Num)...
sse = []
cluster_num_silhouette_list =[]
for n_clusters in range_n_clusters:
clusterer = KMeans(init='k-means++', n_clusters=...
cluster_labels = clusterer.fit_predict(X)
kmeans = clusterer.fit(X)
# SSE(クラスター内誤差の平方和)
sse.append(kmeans.inertia_)
# シルエット値(-1~1)の平均
silhouette_avg = silhouette_score(X, cluster_lab...
print('For n_clusters =', n_clusters,'The averag...
cluster_num_silhouette_list.append([n_clusters,s...
# エルボー図のプロット
plt.plot(range_n_clusters, sse, marker='o')
plt.xlabel('Number of clusters')
plt.ylabel('SSE')
# 保存画像
plt.savefig('figure.png')
#plt.show()
df2 = pd.DataFrame(cluster_num_silhouette_list,colum...
df2.to_csv("cluster_num_silhouette_"+str(cluster_Num...
if __name__ == '__main__':
# データセットを読み込み
cust_df = pd.read_csv("datasets_2times.csv",header=N...
print(cust_df)
cust_array = np.array([cust_df[1].tolist(),cust_df[2...
cust_df[21].tolist(),cust_df[22].tolist(),cust_df[23].to...
cust_df[41].tolist(),cust_df[42].tolist(),cust_df[43].to...
# 行列を転置
cust_array = cust_array.T
print(cust_array)
select_n_cluster(cust_array,len(cust_df))
-結果
|内容|シルエット値|エルボー図|最適なクラスタ|結果|分布|
|3個以上の自治体(5時間がかかった)|&ref(silhouette_2times...
|4個以上の自治体|&ref(silhouette_3times.jpg);|&ref(elbow_...
--3)[[X-means法>https://qiita.com/deaikei/items/8615362d3...
---Pelleg and Moore (2000)が提案したK-meansの拡張アルゴリ...
---クラスター数Kを自動決定する
---k-meansをデータ数が多くても高速に動くようなアルゴリズ...
という点が、従来のk-meansとの差分。
*参考文献 [#wb2bc857]
-[[1,クラスター数決定法の比較>http://www.st.nanzan-u.ac.j...
-[[2,k-means法の最適なクラスター数を選択する:シルエット分...
-[[3,k-means++とk-means>https://qiita.com/g-k/items/e1d55...
-[[4,非階層型クラスタリング k-means>https://qiita.com/Awa...
-[[5,クラスター数を自動決定するk-meansアルゴリズムの拡張...
終了行:
[[個人ページ>seminar-personal/chin2017]]
&br;
[[N班ゼミ>http://f-lab.mydns.jp/index.php?seminar-N-2020]]
|~目次|
|#contents|
&br;
*支部大会 [#r7ba9c19]
-題目:オープンデータの述語サジェストのための項目名のクラ...
-英語:A study on the clustering of item names for predic...
-概要:近年,新型コロナウイルスにより,台湾のオープンデー...
-[[電気・情報関係学会九州支部第73回連合大会>https://gakka...
-発表希望グループ1: 21 計算機応用
-発表希望グループ2: 22 人工知能
-発表希望グループ3: 15 情報通信
-
著者1: 陳 博 チン/ハク
電子メールアドレス: chinhaku204@gmail.com
所属名: 鹿児島大
-著者2: 泊 大貴 トマリ/ダイキ
電子メールアドレス: sc115092@ibe.kagoshima-u.ac.jp
所属名: 鹿児島大
-著者3: 程 芳 テイ/ホウ
電子メールアドレス: mc120040@ibe.kagoshima-u.ac.jp
所属名: 鹿児島大
-著者4: 渕田 孝康 フチダ/タカヤス
電子メールアドレス: fuchida@ibe.kagoshima-u.ac.jp
所属名: 鹿児島大
**参考資料 [#za3876ea]
-1,[[word2vecの原理について>https://www.jstage.jst.go.jp/...
-2,[[形態素分析>https://ipsj.ixsq.nii.ac.jp/ej/?action=re...
*ゼミより抜粋 [#w65cc953]
-&color(red){k-means法でやると違いがあるか?};
-&color(red){k-means++法は?};
-&color(red){他のクラスタも同様な傾向なのか?};
-&color(red){異なるクラスタ間の類似度の分布はどうなってい...
*進捗報告 [#xd8f9873]
**階層的クラスタリング [#paa1391d]
***他のクラスタも同様な傾向なのか? [#y109106a]
-[[距離関数の定義>https://qiita.com/obake_kaiware/items/3...
-式:
--&ref(chin2017-20200703/コサイン類似度.JPG,70%);
--コサイン類似度が 1 に近い ⟺ 2本のベクトルは同じ向きに近い
--コサイン類似度が −1 に近い ⟺ 2本のベクトルは逆向きに近い
***以下は3個以上の自治体に存在する項目名に対して:&ref(lab...
-クラスタ48(131個)を確認する
--抽出:&ref(label_average_cosine_50_cluter_2times_48only....
--計算するソースコード:&ref(cos_sim_for_48.py.txt);
--結果:&ref(cos_sim_all_for_48.csv);
--結果分析:&ref(cos_sim_all_for_48.xlsx);
--131*131=17161ペア(重複の場合を考慮せず:実際ペア数8515...
--分布図&ref(distribution_48.jpg);
-クラスタ46(65個)を確認する
--抽出:&ref(label_average_cosine_50_cluter_2times_46only....
--計算するソースコード:&ref(cos_sim_for_46.py.txt);
--結果:&ref(cos_sim_all_for_46.csv);
--結果分析:&ref(cos_sim_all_for_46.xlsx);
--65*65=4225ペア(重複の場合を考慮せず:実際ペア数2080ペア)
--分布図&ref(distribution_46.jpg);
-クラスタ25(38個)を確認する
--抽出:&ref(label_average_cosine_50_cluter_2times_25only....
--計算するソースコード:&ref(cos_sim_for_25.py.txt);
--結果:&ref(cos_sim_all_for_25.csv);
--結果分析:&ref(cos_sim_all_for_25.xlsx);
--38*38=1444ペア-38=1406(重複の場合を考慮せず:実際ペア数...
--分布図&ref(distribution_25.jpg);
&br;
***以下は4個以上の自治体に存在する項目名に対して:&ref(lab...
-クラスタ23(68個)を確認する
--抽出:&ref(label_average_cosine_50_cluter_3times_23only....
--結果:&ref(cos_sim_all_for_23.csv);
--結果分析:&ref(cos_sim_all_for_23.xlsx);
--68*68=4624ペア-64 /2(重複の場合を考慮せず:実際ペア数2...
--分布図
&ref(distribution_23.jpg);
-クラスタ44(68個)を確認する
--抽出:&ref(label_average_cosine_50_cluter_3times_44only....
--結果:&ref(cos_sim_all_for_44.csv);
--結果分析:&ref(cos_sim_all_for_44.xlsx);
--68*68=4624ペア-64 /2(重複の場合を考慮せず:実際ペア数2...
--分布図
&ref(distribution_44.jpg);
***異なるクラスタ間の類似度の分布はどうなっているか? [#p...
以下は4個以上の自治体に存在する項目名に対して
-クラスタ23(68個)と44(68個)を確認する
--抽出したデータ:&ref(label_average_cosine_50_cluter_3tim...
と&ref(label_average_cosine_50_cluter_3times_23only.csv);
--結果:&ref(cos_sim_all_for_23_44.csv);
--結果分析:&ref(cos_sim_all_for_23_44.xlsx);
--68*68=4624
--分布図
&ref(distribution_23_44.jpg);
-クラスタ16(30個)と31(33個)を確認する
--抽出したデータ:&ref(label_average_cosine_50_cluter_3tim...
と&ref(label_average_cosine_50_cluter_3times_31only.csv);
--計算するソースコード:&ref(cos_sim_for_16_31.py.txt);
--結果:&ref(cos_sim_all_for_16_31.csv);
--結果分析:&ref(cos_sim_all_for_16_31.xlsx);
--30*33=990
--分布図
&ref(distribution_16_31.jpg);
***結果について考察 [#dea52f08]
-妥当ではないクラスタが存在している
-クラスタリングをうまくいかない?
-原因として
--指定したクラスタ数に強制的クラスタリングを行った(乱暴...
---無関係の項目名も強制的に同じクラスタに入っている(クス...
---&color(red){そこで、最適なクススタ数を探す必要ではない...
--辞書?→軽く調べてみる
--クラスタリングのパラメータは大丈夫か?(前回で報告したs...
**[[k-means法>http://tech.nitoyon.com/ja/blog/2009/04/09/...
-教師なし学習の中でもとても有名なアルゴリズムの一つ
-概要:クラスタの平均を用い、与えられたクラスタ数k個に分...
-流れ:
1.各点にランダムにクラスタを割り当てる
2.クラスタの重心を計算する。
3.点のクラスタを、一番近い重心のクラスタに変更する
4.変化がなければ終了。変化がある限りは 2. に戻る。
-[[問題点>https://www.medi-08-data-06.work/entry/kmeans]]...
**[[k-means++>https://www.medi-08-data-06.work/entry/kmea...
-k-means++:k-meansの初期値問題を解消するため
--k-means++では中心の初期値を決める際に、すべての中心点ど...
-ソースコードは[[ここ>https://pythondatascience.plavox.in...
-[[詳細>https://colab.research.google.com/drive/13JWN6Mis...
-クラスタリング用データ:&ref(datasets_2times.csv);と&ref...
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
# データセットを読み込み
cust_df = pd.read_csv("datasets_2times.csv",header=None)
print(cust_df)
cust_array = np.array([cust_df[1].tolist(),cust_df[2].to...
cust_df[11].tolist(),cust_df[12].tolist(),cust_df[13].to...
cust_df[21].tolist(),cust_df[22].tolist(),cust_df[23].to...
cust_df[31].tolist(),cust_df[32].tolist(),cust_df[33].to...
cust_df[41].tolist(),cust_df[42].tolist(),cust_df[43].to...
], np.float32)
# 行列を転置
cust_array = cust_array.T
print(cust_array)
# クラスタ分析を実行 (クラスタ数=50)
pred = KMeans(n_clusters=50, init='k-means++',).fit_pred...
print(pred)
cust_df[51]=pred
print(cust_df)
cust_df.to_csv("k-means_2times_50.csv",index=False,encod...
***結果とクラスタの分布 [#scd9ece8]
-結果:&ref(k-means_2times_50.csv);と&ref(k-means_3times_...
-クラスタの分布1(3個以上の自治体の項目名に対して)
--&ref(k-means_2times_50.xlsx);
--分布図(縦棒):&ref(vertical_bar_kmeans_2times.jpg);
-クラスタの分布2(4個以上の自治体の項目名に対して)
--&ref(k-means_3times_50.xlsx);
--分布図(縦棒):&ref(vertical_bar_kmeans_3times.jpg);
***評価手法(クラスタ数を自動推定) [#qb4cb2a8]
-[[評価方法(評価指標)>https://qiita.com/deaikei/items/11a...
--1)エルボー法:クラスター数を変えてクラスタリングしたとき...
--[[2)シルエット分析法>https://irukanobox.blogspot.com/20...
---1から1の範囲の値
---&color(red){シルエット値が1に近く};、かつシルエット値...
--1)と2)の書いてみたソースコード:&ref(k-means_optimal_cl...
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_samples, silhouet...
#% matplotlib inline
from IPython.core.pylabtools import figsize
import matplotlib.pyplot as plt
def select_n_cluster(X,cluster_Num):
# クラスター数2~8を比べる
range_n_clusters = [i for i in range(2, cluster_Num)...
sse = []
cluster_num_silhouette_list =[]
for n_clusters in range_n_clusters:
clusterer = KMeans(init='k-means++', n_clusters=...
cluster_labels = clusterer.fit_predict(X)
kmeans = clusterer.fit(X)
# SSE(クラスター内誤差の平方和)
sse.append(kmeans.inertia_)
# シルエット値(-1~1)の平均
silhouette_avg = silhouette_score(X, cluster_lab...
print('For n_clusters =', n_clusters,'The averag...
cluster_num_silhouette_list.append([n_clusters,s...
# エルボー図のプロット
plt.plot(range_n_clusters, sse, marker='o')
plt.xlabel('Number of clusters')
plt.ylabel('SSE')
# 保存画像
plt.savefig('figure.png')
#plt.show()
df2 = pd.DataFrame(cluster_num_silhouette_list,colum...
df2.to_csv("cluster_num_silhouette_"+str(cluster_Num...
if __name__ == '__main__':
# データセットを読み込み
cust_df = pd.read_csv("datasets_2times.csv",header=N...
print(cust_df)
cust_array = np.array([cust_df[1].tolist(),cust_df[2...
cust_df[21].tolist(),cust_df[22].tolist(),cust_df[23].to...
cust_df[41].tolist(),cust_df[42].tolist(),cust_df[43].to...
# 行列を転置
cust_array = cust_array.T
print(cust_array)
select_n_cluster(cust_array,len(cust_df))
-結果
|内容|シルエット値|エルボー図|最適なクラスタ|結果|分布|
|3個以上の自治体(5時間がかかった)|&ref(silhouette_2times...
|4個以上の自治体|&ref(silhouette_3times.jpg);|&ref(elbow_...
--3)[[X-means法>https://qiita.com/deaikei/items/8615362d3...
---Pelleg and Moore (2000)が提案したK-meansの拡張アルゴリ...
---クラスター数Kを自動決定する
---k-meansをデータ数が多くても高速に動くようなアルゴリズ...
という点が、従来のk-meansとの差分。
*参考文献 [#wb2bc857]
-[[1,クラスター数決定法の比較>http://www.st.nanzan-u.ac.j...
-[[2,k-means法の最適なクラスター数を選択する:シルエット分...
-[[3,k-means++とk-means>https://qiita.com/g-k/items/e1d55...
-[[4,非階層型クラスタリング k-means>https://qiita.com/Awa...
-[[5,クラスター数を自動決定するk-meansアルゴリズムの拡張...
ページ名: