K平均法アルゴリズム Java実装 クラスタ分析 681 三国志の将軍

K平均法アルゴリズム Java実装 クラスタ分析 681 三国志の将軍

1. k-meansアルゴリズムの紹介:

k-means アルゴリズムは入力量 k を受け取り、n 個のデータ オブジェクトを k 個のクラスターに分割します。これにより、取得したクラスターは次の条件を満たします。同じクラスター内のオブジェクトの類似性は高く、異なるクラスター内のオブジェクトの類似性は低くなります。クラスターの類似性は、各クラスター内のオブジェクトの平均を使用して「中心オブジェクト」(重心) を取得することによって計算されます。 k 個のクラスターには、各クラスター自体が可能な限りコンパクトであり、クラスターが可能な限り分離されているという特性があります。 k 個のクラスターには、各クラスター自体が可能な限りコンパクトであり、クラスターが可能な限り分離されているという特性があります。

k-means アルゴリズムの動作プロセスは、次のように説明されます。まず、n 個のデータ オブジェクトから k 個のオブジェクトがランダムに選択され、初期クラスター センターとして処理されます。残りのオブジェクトについては、これらのクラスター センターとの類似度 (距離) に基づいて、最も類似するクラスター (クラスター センターによって表される) に割り当てられます。次に、新しい各クラスターのクラスター センターが計算されます (クラスター内のすべてのオブジェクトの平均)。このプロセスは、標準測定関数が収束し始めるまで繰り返されます。平均二乗誤差は、一般的に標準的な測定関数として使用されます。 k 個のクラスターには、各クラスター自体が可能な限りコンパクトであり、クラスターが可能な限り分離されているという特性があります。

次に、k-means アルゴリズムの基本的な手順を示します。

(1)n個のデータオブジェクトからk個のオブジェクトをランダムに選択し、初期クラスタリングセンターとする。

(2)各クラスターオブジェクトの平均値(中心オブジェクト)に基づいて、各オブジェクトとこれらの中心オブジェクト間の距離を計算し、対応するオブジェクトを最小距離に従って再分割する。

(3)各(変更された)クラスターの平均(中心オブジェクト)を再計算する。

(4)標準測度関数を計算する。関数が収束するなど、特定の条件が満たされるとアルゴリズムは終了する。条件が満たされない場合は、ステップ(2)に戻り、標準測度関数が収束し始めるまで繰り返す。 (平均二乗誤差は、一般的に標準的な測定関数として使用されます。)

3. k-meansアルゴリズムのJava実装:

全部で 7 つのクラスがあります。General.java は将軍オブジェクトを表し、Distance.java 距離クラスは各将軍と中心将軍の間の距離を計算します。Cluster.java クラスタリング オブジェクトには中心将軍とクラスター内のすべての将軍が含まれます。Kmeans.java はコア クラスタリング アルゴリズム クラスです。Tool.java ツール クラスは将軍の星評価を数値やその他の操作に変換するために使用されます。TestKmeans.java テスト クラスはエントリ ファイルです。DomParser.java は xml で 681 人の将軍を読み取るために使用されます。

具体的なアイデア: まず、general.xml ファイルから 681 個の将軍を読み取り、次にランダムに初期クラス センターを選択し、各将軍から中央将軍までの距離を計算し、最小距離に従ってクラスタリングします。次に、平均値に基づいて新しいクラスタのクラス センターを再クラスタリングし、各将軍から新しい中央将軍までの距離を再計算します。更新されたクラスタと元のクラスタに含まれる将軍が変化しなくなるまで、つまり収束したときに終了します。

具体的なコードは次のとおりです。

1、一般.java

  1. </pre><pre name= "コード"  クラス= "java" >
  1. </pre><pre name= "コード"  クラス= "java" >パッケージkmeans;
  2.  
  3. 公共 クラス一般{
  4.       
  5.      private String name; // 名前 
  6.     プライベート  int render; // 星評価 
  7.     プライベート  int tongshai; // 司令官 
  8.     プライベート  int wuli; // 強制 
  9.     プライベート  int zhili; // 知能 
  10.     プライベート  int政治; // 政治 
  11.     プライベート  int qiangbin; // 槍兵 
  12.     プライベート  int jibin; // ハルバード兵士 
  13.     プライベート  int nubin; // クロスボウマン 
  14.     プライベート  int qibin; // 騎兵 
  15.     プライベート  int binqi; // 武器 
  16.     プライベート  int tongwu; // 同武 
  17.     プライベート  int tongzhi; // 同志 
  18.     プライベート  int tongwuzhi; // トンウジ 
  19.     プライベート  int tongwuzhizheng; // トンウジジエン 
  20.     プライベート  int salary; // レベル50の給与 
  21.  
  22.     パブリック一般( intレンダリング、 String name、 int tongshai、 int wuli、 int zhili、
  23.              intポリック、 int強ビン、 intジビン、 intヌビン、 intキビン、
  24.              int binqi、 int tongwu、 int tongzhi、 int tongwuzhi、
  25.              int通用知正、 int給与){
  26.         素晴らしい();
  27.          this .name = 名前;
  28.         これは.render = render;
  29.          this .tongshai = tongshai;
  30.          this .wuli = wuli;
  31.          this .zhili = zhili;
  32.          this .polic = ポリック;
  33.         これは.qiangbin = qiangbin;
  34.          this .jibin = jibin;
  35.         これは.nubin = nubin;
  36.         これは.qibin = qibin;
  37.          .binqi = binqi;です
  38.          this .tongwu = tongwu;
  39.          this .tongzhi = tongzhi;
  40.          this .tongwuzhi = tongwuzhi;
  41.          this .tongwuzhizheng = tongwuzhizheng;
  42.          this .salary = 給料;
  43. }
  44.  
  45.     パブリック一般( int render、 int tongshai、 int wuli、 int zhili、 int polic、
  46.              int qiangbin、 int jibin、 int nubin、 int qibin、 int binqi、
  47.              int tongwu、 int tongzhi、 int tongwuzhizheng、 int tongwuzhizheng、
  48.             給与(int ){
  49.         素晴らしい();
  50.          this .name = "クラスターセンター" ;
  51.         これは.render = render;
  52.          this .tongshai = tongshai;
  53.          this .wuli = wuli;
  54.          this .zhili = zhili;
  55.          this .polic = ポリック;
  56.         これは.qiangbin = qiangbin;
  57.          this .jibin = jibin;
  58.         これは.nubin = nubin;
  59.         これは.qibin = qibin;
  60.          .binqi = binqi;です
  61.          this .tongwu = tongwu;
  62.          this .tongzhi = tongzhi;
  63.          this .tongwuzhi = tongwuzhi;
  64.          this .tongwuzhizheng = tongwuzhizheng;
  65.          this .salary = 給料;
  66. }
  67.  
  68.     パブリック一般() {
  69. }
  70.  
  71.      @オーバーライド 
  72.     パブリック文字列toString() {
  73.         戻る  「一般 [name=" + name + ", render=" + Tool.dxingji(render)
  74. + "、tongshai=" + tongshai + "、wuli=" + wuli + "、zhili="  
  75. + zhili + "、polic=" + polic + "、qiangbin="  
  76. + Tool.dchange(qiangbin) + ", jibin=" + Tool.dchange(jibin)
  77. + ", nubin=" + Tool.dchange(nubin) + ", qibin="  
  78. + Tool.dchange(qibin) + ", binqi=" + Tool.dchange(binqi)
  79. + "、同武=" + 同武 + "、同志=" + 同志
  80. + "、tongwuzhi=" + tongwuzhi + "、tongwuzhizheng="  
  81. + tongwuzhizheng + "、給与=" + 給与 + "]" ;
  82. }
  83.  
  84.     パブリック文字列getName() {
  85.         名前を返します
  86. }
  87.  
  88.     公共  void setName(文字列名) {
  89.          this .name = 名前;
  90. }
  91.  
  92.     公共 整数getRender() {
  93.         レンダリングを返します
  94. }
  95.  
  96.     公共  void setRender( intレンダリング) {
  97.         これは.render = render;
  98. }
  99.  
  100.     公共  int getTongshai() {
  101.          tongshaiを返す;
  102. }
  103.  
  104.     公共  void setTongshai( int tongshai) {
  105.          this .tongshai = tongshai;
  106. }
  107.  
  108.     公共  int getWuli() {
  109.         ウーリを返す;
  110. }
  111.  
  112.     公共  void setWuli( int wuli) {
  113.          this .wuli = wuli;
  114. }
  115.  
  116.     公共  int getZhili() {
  117.         直理を返す;
  118. }
  119.  
  120.     公共  void setZhili( int zhili) {
  121.          this .zhili = zhili;
  122. }
  123.  
  124.     公共  int getPolic() {
  125.         返品ポリシー;
  126. }
  127.  
  128.     公共  void setPolic( intポリシー) {
  129.          this .polic = ポリック;
  130. }
  131.  
  132.     公共  int getQiangbin() {
  133.         強斌を返す;
  134. }
  135.  
  136.     公共  void setQiangbin( int qiangbin) {
  137.         これは.qiangbin = qiangbin;
  138. }
  139.  
  140.     公共  int getJibin() {
  141.         ジビンを返す;
  142. }
  143.  
  144.     公共  void setJibin( int jibin) {
  145.          this .jibin = jibin;
  146. }
  147.  
  148.     公共  int getNubin() {
  149.         ヌビンを返す;
  150. }
  151.  
  152.     公共  void setNubin( int nubin) {
  153.         これは.nubin = nubin;
  154. }
  155.  
  156.     公共  int getQibin() {
  157.         キビンを返す;
  158. }
  159.  
  160.     公共  void setQibin( int qibin) {
  161.         これは.qibin = qibin;
  162. }
  163.  
  164.     公共  int getBinqi() {
  165.         ビンチーを返す;
  166. }
  167.  
  168.     公共  void setBinqi( int binqi) {
  169.          .binqi = binqi;です
  170. }
  171.  
  172.     公共  int getTongwu() {
  173.         トンウーを返す;
  174. }
  175.  
  176.     公共  void setTongwu( int tongwu) {
  177.          this .tongwu = tongwu;
  178. }
  179.  
  180.     公共  int getTongzhi() {
  181.         同志を返す;
  182. }
  183.  
  184.     公共  void setTongzhi( int tongzhi) {
  185.          this .tongzhi = tongzhi;
  186. }
  187.  
  188.     公共  int getTongwuzhi() {
  189.         トンウジを返す;
  190. }
  191.  
  192.     公共  void setTongwuzhi( int tongwuzhi) {
  193.          this .tongwuzhi = tongwuzhi;
  194. }
  195.  
  196.     公共  int getTongwuzhizheng() {
  197.         トンウジジエンを返す;
  198. }
  199.  
  200.     公共  void setTongwuzhizheng( int tongwuzhizheng) {
  201.          this .tongwuzhizheng = tongwuzhizheng;
  202. }
  203.  
  204.     公共  int getSalary() {
  205.         給与を返還する
  206. }
  207.  
  208.     公共  void setSalary( int給与) {
  209.          this .salary = 給料;
  210. }
  211.  
  212. }

2、距離.java

  1. </pre><pre name= "コード"  クラス= "java" >パッケージkmeans;
  2. /**
  3. * このクラスは距離を計算するために使用されます。 。
  4. *
  5. */  
  6. 公共 クラス距離 {
  7.      int dest; // 宛先 
  8.      intソース; // ソース 
  9.      double dist; // ユークリッド距離 
  10.  
  11.     公共  int getDest() {
  12.         宛先を返します
  13. }
  14.  
  15.     公共  void setDest( int dest) {
  16.          this .dest = dest;
  17. }
  18.  
  19.     公共 整数getSource() {
  20.         ソースを返します
  21. }
  22.  
  23.     公共  void setSource( intソース) {
  24.          this .source = ソース;
  25. }
  26.  
  27.     公共 ダブルgetDist() {
  28.          distを返します
  29. }
  30.  
  31.     公共  void setDist( double dist) {
  32.         これは.dist = dist;
  33. }
  34.      /**
  35. * 出発地と目的地の間の距離を計算する
  36. * @param dest ターゲット一般
  37. * @param ソース ソース 一般
  38. * @param dist 2つの間の距離
  39. */  
  40.     パブリック距離( int宛先、 intソース、 double距離) {
  41.          this .dest = dest;
  42.          this .source = ソース;
  43.         これは.dist = dist;
  44. }
  45.  
  46.     パブリック距離() {
  47. }
  48.  
  49. }

#p#

3、クラスター.java

  1. </pre><pre name= "コード"  クラス= "java" >パッケージkmeans;
  2.  
  3. java.util.ArrayListをインポートします
  4.  
  5. 公共 クラスクラスター {
  6.     プライベート  int center; // クラスターセンター内の将軍のID  
  7.      private ArrayList<General> ofCluster = new ArrayList<General>(); // このクラスターに属する将軍のコレクション 
  8.  
  9.     公共 整数getCenter() {
  10.         返品センター;
  11. }
  12.  
  13.     公共  void setCenter( int center) {
  14.          this .center = center;
  15. }
  16.  
  17.     パブリックArrayList<General> getOfCluster() {
  18.         クラスターを返します
  19. }
  20.  
  21.     公共  void setOfCluster(ArrayList<General> ofCluster) {
  22.         これは.ofCluster = ofCluster; です。
  23. }
  24.  
  25.     公共  void addGeneral(General 一般) {
  26.          if (!( this .ofCluster.contains(general)))
  27.             これを.ofCluster.add(general);
  28. }
  29. }

4、Kmeans.java

  1. </pre><pre name= "コード"  クラス= "java" >
  1. パッケージkmeans;
  2.  
  3. java.util.*をインポートします
  4.  
  5. 公共 クラスKmeans {
  6.     パブリックArrayList<General> allGenerals = null ;
  7.     公共  int totalNumber = 0 ; // すべての将軍の数を取得する 
  8.     公共  int K = 0 ; // K=10 と仮定 
  9.  
  10.     パブリックKmeans() {
  11. allGenerals =新しいDomParser().prepare();
  12. 合計数 = allGenerals.size();
  13. 3 = 3 ;
  14. }
  15.  
  16.      // 初めてクラスターの中心をランダムに選択する 
  17.     パブリックSet<Integer>firstRandom() {
  18. Set<Integer> center = new HashSet<Integer>(); // クラスターの中心にあるポイントの ID。重複する ID がないことを確認するには、set を使用します。  
  19. ランダム ran = new Random();
  20.          intロール = ran.nextInt(totalNumber);
  21.          (center.size() < K) の場合
  22. ロール = ran.nextInt(totalNumber);
  23. center.add(ロール);
  24. }
  25.         返品センター;
  26. }
  27.  
  28.      // クラスタ中心に従ってクラスタリング情報を初期化する 
  29.     パブリックArrayList<Cluster> init(Set<Integer> center) {
  30. ArrayList<Cluster> cluster = new ArrayList<Cluster>(); // クラスター配列 
  31. イテレータ<Integer> it = center.iterator();
  32.          (it.hasNext())の間{
  33. Cluster c = new Cluster(); // クラスターを表す 
  34. c.setCenter(it.next());
  35. クラスターを追加します。
  36. }
  37.         クラスターを返します
  38. }
  39.  
  40.      /**
  41. * 各将軍から各クラスター中心までの距離を計算し、再クラスター化する
  42. *
  43. * @param クラスター
  44. * クラスタリング配列、クラスタリングに使用され、最も近い原則に従って一般をクラスタリングします
  45. * @param 中心
  46. * 中心点ID。各ジェネラルから中心点までの距離を計算するために使用され、クラスタを返します。クラスタリング後のすべてのクラスタの配列
  47. */  
  48.     パブリックArrayList<Cluster> juLei(Set<Integer> center,
  49. ArrayList<Cluster> クラスター) {
  50. ArrayList<Distance> distance = new ArrayList<Distance>(); // 各ポイントから各中心点までの距離の配列を表す距離情報を格納します 
  51. 一般的なソース = null ;
  52. 一般的なdest = null ;
  53.          int id = 0 ; // 宛先ノードID  
  54.          int id2 = 0 ; // ソースノードID  
  55. Object[] p = center.toArray(); // pはクラスターの中心点ID配列です 
  56.         ブールフラグ = false ;
  57.          // 各点から各中心点までの距離をそれぞれ計算し、各クラスターへの距離が最小の点を追加してクラスタリングします。  
  58.          ( int i = 0 ; i < totalNumber; i++) {
  59.              // 各ポイントを計算して最小距離のクラスターにクラスタリングした後、距離配列をクリアします 
  60. 距離をクリアします。
  61.              // 各中心点を容易にするために、j クラスの中心点までの距離を計算します 
  62.              ( int j = 0 ; j < center.size(); j++) {
  63.                  // 点が中心点内にない場合は、距離を計算します 
  64.                  if (!(center.contains(i))) {
  65. フラグ = true ;
  66.                      // 距離を計算する 
  67. source = allGenerals.get(i); // ポイント 
  68. dest = allGenerals.get((Integer) p[j]); // 各中心点 
  69.                      // 距離を計算して配列に保存します 
  70. distance.add(新しいDistance((Integer) p[j], i, Tool.juli(
  71. ソース、宛先)));
  72. }それ以外{
  73. フラグ = false ;
  74. }
  75. }
  76.              // 説明: 特定の将軍からクラスの中心までの距離を計算した後、比較を開始します 
  77.             フラグがtrue場合
  78.                  // ポイントから各中心までの距離を並べ替えて比較し、距離が最小のジェネラルのターゲット ID とソース ID を見つけます。  
  79.                  // 目的地IDはクラスの中心点IDであり、中心点が配置されているクラスターに属します 
  80.                  double min = distance.get( 0 ).getDist(); // デフォルトでは、最初の距離が最小値になります 
  81.                  // 距離配列を1から走査し始める 
  82.                  int minid = 0 ;
  83.                  ( int k = 1 ; k < distance.size(); k++) {
  84.                     最小値 > 距離.get(k).getDist()の場合{
  85. 最小値 = 距離.get(k).getDist();
  86. id = distence.get(k).getDest(); // 目的地、つまりクラスの中心点 
  87. id2 = distence.get(k).getSource(); // ある将軍 
  88. ミニd = k;
  89. }それ以外{
  90. id = distance.get(minid).getDest();
  91. id2 = distance.get(minid).getSource();
  92. }
  93. }
  94.                  // クラスター配列を走査し、中心点IDがターゲット一般IDと同じで距離が最小のクラスターを見つける 
  95.                  ( int n = 0 ; n < cluster.size(); n++) {
  96.                      // IDが中心点と同じ場合はsetError  
  97.                      (cluster.get(n).getCenter() == id)の場合{
  98. cluster.get(n).addGeneral(allGenerals.get(id2)); // クラスターの中心からの距離が最も小さい将軍をクラスターに追加します 
  99.                         壊す;
  100. }
  101. }
  102. }
  103. }
  104.         クラスターを返します
  105. }
  106.  
  107.      // 新しいクラスター中心点配列を生成する 
  108.     パブリックSet<Integer> updateCenter() {
  109. Set<Integer> center =新しいHashSet<Integer>();
  110.          ( int i = 0 ; i < K; i++) {
  111. center.add(i);
  112. }
  113.         返品センター;
  114. }
  115.  
  116.      // クラスターの中心を更新し、平均値を見つける 
  117.     パブリックArrayList<Cluster> updateCluster(ArrayList<Cluster> クラスター) {
  118. ArrayList<Cluster> 結果 =新しいArrayList<Cluster>();
  119.          // 新しいクラスターセンターの配列を再生成する 
  120.          // クラスター中心を更新する k 個のクラスター 
  121.          ( int j = 0 ; j < K; j++)の場合{
  122. ArrayList<General> ps = cluster.get(j).getOfCluster(); // このクラスターのすべてのジェネラル 
  123.                                                                      // 配列は 
  124. ps.add(allGenerals.get(cluster.get(j).getCenter())); // 同時に、このクラスの中心に対応する将軍を将軍配列に追加します。  
  125.              int size = ps.size(); // クラスターの長さ 
  126.              // 合計を計算してから平均を計算します 
  127.              int sumrender = 0 、sumtongshai = 0 、sumwuli = 0 、sumzhili = 0 、sumjibin = 0 、sumnubin = 0 、sumqibin = 0 sumpolic = 0 、sumqiangbin = 0 、sumbinqi = 0、sumtongwu = 0 sumtongzhi = 0 、sumtongwuzhizheng = 0 、sumsalary = 0 ;
  128.              ( int k1 = 0 ; k1 < サイズ; k1++) {
  129. レンダリングの合計 += ps.get(k1).getRender();
  130. sumtongshai += ps.get(k1).getRender();
  131. 合計wuli += ps.get(k1).getWuli();
  132. sumzhili += ps.get(k1).getZhili();
  133. 合計jibin += ps.get(k1).getJibin();
  134. 合計Nubin += ps.get(k1).getNubin();
  135. 合計qibin += ps.get(k1).getQibin();
  136. sumpolic += ps.get(k1).getPolic();
  137. 合計qiangbin += ps.get(k1).getQiangbin();
  138. sumbinqi += ps.get(k1).getBinqi();
  139. sumtongwu += ps.get(k1).getTongwu();
  140. sumtongzhi += ps.get(k1).getTongzhi();
  141. 合計トンウジ += ps.get(k1).getTongwuzhi();
  142. 合計同武智正 += ps.get(k1).get同武智正();
  143. 合計給与 += ps.get(k1).getSalary();
  144. }
  145.              // 新しいクラスターを生成し、クラスター配列に追加します 
  146. クラスター newCluster = new Cluster();
  147. 新しいクラスター。
  148.              // 平均値を計算し、新しい一般オブジェクトを構築します 
  149. newCluster.addGeneral(新しいGeneral(sumrender / size, sumtongshai
  150. / サイズ、sumwuli / サイズ、sumzhili / サイズ、sumjibin / サイズ、
  151. サムヌビン / サイズ、サムキビン / サイズ、サムポリック = 0
  152. sumqiangbin = 0 、sumbinqi / サイズ、sumtongwu / サイズ、
  153. サイズ / サイズ、サイズ / サイズ、サイズ
  154. / サイズ、合計給与 / サイズ));
  155. 結果に新しいクラスターを追加します。
  156. }
  157.         結果を返します
  158.  
  159. }
  160.  
  161.      /**
  162. * 各将軍から各更新されたクラスタ中心までの距離を計算し、再クラスタリングする
  163. * @param update 更新されたクラスターセンター
  164. * @param cluster 保存するクラスタの中心
  165. */  
  166.     パブリックArrayList<Cluster> updateJuLei(ArrayList<Cluster> update,
  167. ArrayList<Cluster> クラスター) {
  168. ArrayList<Distance> distance = new ArrayList<Distance>(); // 各ポイントから各中心点までの距離の配列を表す距離情報を格納します 
  169. 一般的なソース = null ;
  170. 一般的なdest = null ;
  171.          int id = 0 ; // 宛先ノードID  
  172.          int id2 = 0 ; // ソースノードID  
  173.          //Object[] p = center.toArray(); // pはクラスターの中心点ID配列です 
  174.         ブールフラグ = false ;
  175.          // 各点から各中心点までの距離をそれぞれ計算し、各クラスターへの距離が最小の点を追加してクラスタリングします。  
  176.          ( int i = 0 ; i < totalNumber; i++) {
  177.              // 各ポイントを計算して最小距離のクラスターにクラスタリングした後、距離配列をクリアします 
  178. 距離をクリアします。
  179.              // 各中心点を容易にするために、j クラスの中心点までの距離を計算します 
  180.              // for (int j = 0; j < center.size(); j++) {  
  181.              ( int j = 0 ; j < update.size(); j++) {
  182.                  // 点が中心点内にない場合は、距離を計算します 
  183.                  //if (!(center.contains(i))) {  
  184. フラグ = true ;
  185.                      // 距離を計算する 
  186. source = allGenerals.get(i); // ポイント 
  187.                      // dest = allGenerals.get((Integer) p[j]); // 各中心点 
  188. dest = update.get(j).getOfCluster().get( 0 ); // 各中心点 
  189.                      // 距離を計算して配列に保存します 
  190.                      //distence.add(新しいDistance((Integer) p[j], i, Tool.juli(  
  191. distance.add(新しいDistance(update.get(j).getCenter(), i, Tool.juli(
  192. ソース、宛先)));
  193.                      /*} それ以外 {
  194. フラグ = false;
  195. }*/  
  196. }
  197.              // 説明: 特定の将軍からクラスの中心までの距離を計算した後、比較を開始します 
  198.             フラグがtrue場合
  199.                  // ポイントから各中心までの距離を並べ替えて比較し、距離が最小のジェネラルのターゲット ID とソース ID を見つけます。  
  200.                  // 目的地IDはクラスの中心点IDであり、中心点が配置されているクラスターに属します 
  201.                  double min = distance.get( 0 ).getDist(); // デフォルトでは、最初の距離が最小値になります 
  202.                  // 距離配列を1から走査し始める 
  203.                 整数中間 = 0 ;
  204.                  ( int k = 1 ; k < distance.size(); k++) {
  205.                     最小値 > 距離.get(k).getDist()の場合{
  206. 最小値 = 距離.get(k).getDist();
  207. id = distence.get(k).getDest(); // 目的地、つまりクラスの中心点 
  208. id2 = distence.get(k).getSource(); // ある将軍 
  209. ミッド = k;
  210. }それ以外{
  211. id = distance.get(mid).getDest();
  212. id2 = distance.get(mid).getSource();
  213. }
  214. }
  215.                  // クラスター配列を走査し、中心点IDがターゲット一般IDと同じで距離が最小のクラスターを見つける 
  216.                  ( int n = 0 ; n < cluster.size(); n++) {
  217.                      // IDが中心点と同じ場合はsetError  
  218.                      (cluster.get(n).getCenter() == id)の場合{
  219. cluster.get(n).addGeneral(allGenerals.get(id2)); // クラスターの中心からの距離が最も小さい将軍をクラスターに追加します 
  220. }
  221. }
  222. }
  223. }
  224.         クラスターを返します
  225. }
  226.  
  227.      // 各クラスタが再分配されなくなるまでクラスタリングをループし続ける 
  228.     パブリックArrayList<Cluster> getResult() {
  229. ArrayList<Cluster> 結果 =新しいArrayList<Cluster>();
  230. ArrayList<Cluster> temp =新しいArrayList<Cluster>();
  231.         ブールフラグ = false ;
  232.          // ランダムな中心点を取得し、それらをクラスタ化する 
  233. <Integer> center を firstRandom() に設定します。
  234. 結果 = juLei(center, init(center));
  235. 結果を印刷します。
  236.         する{
  237.              // 再クラスタリング 
  238. ArrayList<Cluster> up = updateCluster(result); //新しいクラスターセンター 
  239. ArrayList<Cluster> cluster = init(updateCenter()); // 更新された中心点に対応するクラスター配列を取得します 
  240. temp = updateJuLei(up, クラスター);
  241.              //印刷(temp);  
  242. フラグ = isEquals(temp, 結果);
  243. 結果 = temp;
  244. } while (!フラグ);
  245.         結果を返します
  246. }
  247.       
  248.     公共 ブール値isEquals(ArrayList<Cluster> temp, ArrayList<Cluster> result){
  249.         ブールフラグ = false ;
  250.          (temp.size() != result.size())の場合{
  251.             フラグを返します
  252. }
  253.          (クラスター tem : temp){
  254.              for (クラスター res : 結果){
  255.                  (tem.getCenter() == res.getCenter())の場合{
  256. フラグ = true ;
  257. }
  258. }
  259.              // ラウンドを検索しても見つからない場合は、クラスターが2つあることを意味します 
  260.              if (フラグ == false ){
  261.                 戻る 間違い;
  262. } else { // ラウンド検索後に見つかった場合は再度検索します 
  263. フラグ = false ;
  264. }
  265. }
  266.          //コードがここまで進むことができれば、それはtrueを意味します 
  267. フラグ = true ;
  268.         フラグを返します
  269. }
  270.       
  271.      // すべてのクラスターを出力 
  272.     公共  void print(ArrayList<Cluster> cs) {
  273. System.out.println( "********************************************" );
  274.          ( int i = 0 ; i < cs.size(); i++) {
  275. クラスター c = cs.get(i);
  276. System.out.println( "-----------------------------------------------------" );
  277. System.out.println( "中心: " + allGenerals.get(c.getCenter()));
  278. ArrayList<General> p = c.getOfCluster();
  279.              ( int j = 0 ; j < p.size(); j++)の場合{
  280. System.out.println( "一般: " +p.get(j)+ "\n" );
  281. }
  282. }
  283. }
  284.  
  285. }

#p#

5、ツール.java

  1. </pre><pre name= "コード"  クラス= "java" >パッケージkmeans;
  2.  
  3. 公共 クラスツール{
  4.      //各種武器の熟練度を数値に変換する 
  5.     公共 静的  int change(文字列str) {
  6.          int結果 = str.equals( "精" ) ? 4 : (str.equals( "神" ) ? 3 : (str
  7. .equals( "通" ) ? 2 : 1 ));
  8.         結果を返します
  9. }
  10.      //星評価を数値に変換します 
  11.     公共 静的  int xingji(文字列 str) {
  12.          int結果 = str.equals( "★★★★★" ) ? 5 : (str.equals( "★★★★" ) ? 4 : (str
  13. .equals( "★★★" ) ? 3 : (str.equals( "★★" ) ? 2 : 1 )));
  14.         結果を返します
  15. }
  16.      // さまざまな武器の数値を熟練度レベルに変換します 
  17.     公共 静的文字列dchange( int str) {
  18. 文字列結果 = str== 4 ? "精" : (str== 3 ? "神" : (str== 2 ? "通" : "疏" ));
  19.         結果を返します
  20. }
  21.      // 数字を星評価に反転します 
  22.     公共 静的文字列dxingji( int str) {
  23. 文字列結果 = str== 5 ? "★★★★★" : (str== 4 ? "★★★★" : (str== 3 ? "★★★" : (str == 2 ? "★★" : "★" )));
  24.         結果を返します
  25. }
  26.      //ユークリッド距離を計算し、2 つの一般的なオブジェクトを渡します。 。  
  27.     公共 静的 ダブルジュリ(ジェネラルg1、ジェネラルg2) {
  28.         倍精度結果 = (倍精度) Math.sqrt(StrictMath.pow(g1.getRender() - g2.getRender(), 2 )
  29. + StrictMath.pow(g1.getTongshai() - g2.getTongshai(), 2 )
  30. + StrictMath.pow(g1.getWuli() - g2.getWuli(), 2 )
  31. + StrictMath.pow(g1.getZhili() - g2.getZhili(), 2 )
  32. + StrictMath.pow(g1.getPolic() - g2.getPolic(), 2 )
  33. + StrictMath.pow(g1.getQiangbin() - g2.getQiangbin(), 2 )
  34. + StrictMath.pow(g1.getQibin() - g2.getQibin(), 2 )
  35. + StrictMath.pow(g1.getJibin() - g2.getJibin(), 2 )
  36. + StrictMath.pow(g1.getNubin() - g2.getNubin(), 2 )
  37. + StrictMath.pow(g1.getBinqi() - g2.getBinqi(), 2 )
  38. + StrictMath.pow(g1.getTongwu() - g2.getTongwu(), 2 )
  39. + StrictMath.pow(g1.getTongzhi() - g2.getTongzhi(), 2 )
  40. + StrictMath.pow(g1.getTongwuzhizheng() - g2.getTongwuzhizheng(), 2 )
  41. + StrictMath.pow(g1.getTongwuzhi() - g2.getTongwuzhi(), 2 )
  42. + StrictMath.pow(g1.getSalary() - g2.getSalary(), 2 )
  43. );
  44.         結果を返します
  45. }
  46. }

6.DomParser.java

  1. </pre><pre name= "コード"  クラス= "java" >パッケージkmeans;
  2.  
  3. javax.xml.parsers.*をインポートします
  4.  
  5. java.io.*をインポートします
  6. java.util.ArrayListをインポートします
  7.  
  8. org.w3c.dom.*をインポートします
  9. org.xml.sax.SAXExceptionをインポートします
  10.  
  11. 公共 クラスDomParser {
  12.  
  13.     プライベートArrayList<General> generals =新しいArrayList<General>();
  14.  
  15.     パブリックArrayList<General>準備(){
  16.          // DOMパーサーファクトリーを取得 
  17. DocumentBuilderFactory ファクトリー = DocumentBuilderFactory.newInstance();
  18. factory.setIgnoringElementContentWhitespace( true );
  19.          // DOMパーサーを取得 
  20. DocumentBuilder ビルダー = null ;
  21.         試す{
  22. ビルダー = factory.newDocumentBuilder();
  23. }キャッチ(ParserConfigurationException e) {
  24. e.printStackTrace();
  25. }
  26.          // ドキュメントを解析する 
  27. ドキュメント doc = null ;
  28.         試す{
  29. doc = builder.parse(新しいファイル( "general.xml" ));
  30. } (SAXException e)をキャッチ{
  31. e.printStackTrace();
  32. }キャッチ(IOException e) {
  33. e.printStackTrace();
  34. }
  35.          // ルートノードを取得する 
  36. 要素 generalList = doc.getDocumentElement();
  37.          // すべての行ノードを取得する 
  38. NodeList nodeList = generalList.getElementsByTagName( "行" );
  39.          // すべての行ノードに便利 
  40.          ( int i = 1 ; i < nodeList.getLength(); i++) {
  41.               
  42. System.out.println( "-------------" + i
  43. + "要素--------------" );
  44.               
  45. ノード行 = nodeList.item(i);
  46.              // すべてのデータを取得 
  47. NodeList attList = row.getChildNodes();
  48.              // データの各部分を取得してArrayListに追加します 
  49. generals.add(新しいGeneral(Tool.xingji(attList.item( 1 )
  50. .getTextContent()), attList.item( 3 ).getTextContent(),
  51. Integer.parseInt(attList.item( 5 ).getTextContent())、
  52. Integer.parseInt(attList.item( 7 ).getTextContent())、
  53. Integer.parseInt(attList.item( 9 ).getTextContent())、
  54. Integer.parseInt(attList.item( 11 ).getTextContent())、
  55. ツール.change(attList.item( 13 ).getTextContent()),
  56. ツール.change(attList.item( 15 ).getTextContent()),
  57. ツール.change(attList.item( 17 ).getTextContent()),
  58. ツール.change(attList.item( 19 ).getTextContent()),
  59. ツール.change(attList.item( 21 ).getTextContent()),
  60. Integer.parseInt(attList.item( 23 ).getTextContent())、
  61. Integer.parseInt(attList.item( 25 ).getTextContent())、
  62. Integer.parseInt(attList.item( 27 ).getTextContent())、
  63. Integer.parseInt(attList.item( 29 ).getTextContent())、
  64. Integer.parseInt(attList.item( 31 ).getTextContent())));
  65.               
  66. System.out.println( " 星の数: "  
  67. + Tool.xingji(attList.item( 1 ).getTextContent()) + " 名前: "  
  68. + attList.item( 3 ).getTextContent() + "コマンド:"  
  69. + attList.item( 5 ).getTextContent() + "強制:"  
  70. + attList.item( 7 ).getTextContent() + " 知性: "  
  71. + attList.item( 9 ).getTextContent() + "政治:"  
  72. + attList.item( 11 ).getTextContent() + "ランサー:"  
  73. + Tool.change(attList.item( 13 ).getTextContent()) + " ハルバード:"  
  74. + Tool.change(attList.item( 15 ).getTextContent()) + " クロスボウマン: "  
  75. + Tool.change(attList.item( 17 ).getTextContent()) + "騎兵:"  
  76. + Tool.change(attList.item( 19 ).getTextContent()) + "武器:"  
  77. + Tool.change(attList.item( 21 ).getTextContent()) + "同武:"  
  78. + attList.item( 23 ).getTextContent() + "同志:"  
  79. + attList.item( 25 ).getTextContent() + "同無知:"  
  80. + attList.item( 27 ).getTextContent() + "同武智正:"  
  81. + attList.item( 29 ).getTextContent() + "レベル50の給与:"  
  82. + attList.item( 31 ).getTextContent() + " " );
  83.              /*
  84. * (int j = 0; j < attList.getLength(); j++) の場合 {
  85. * System.out.println(attList.item(j).getTextContent()); }
  86. */  
  87. }
  88.         将軍を復帰させる
  89.  
  90. }
  91. }

7、TestKmeans.java

  1. パッケージkmeans;
  2.  
  3. 公共 クラスTestKmeans {
  4.  
  5.     公共 静的  void main(String[] args) {
  6. Kmeans_eold kmeans =新しいKmeans_eold();
  7. kmeans.print(kmeans.getResult());
  8. }
  9.  
  10. }

#p#

添付されているのは general.xml の一部です。

  1. <? xml  バージョン= "1.0" ?>  
  2. <? mso アプリケーション  progid = "Excel.Sheet" ?>  
  3. <ワークブック  xmlns = "urn:schemas-microsoft-com:office:spreadsheet"  
  4.   xmlns:o = "urn:schemas-microsoft-com:office:office"  
  5.   xmlns:x = "urn:schemas-microsoft-com:office:excel"  
  6.   xmlns:ss = "urn:schemas-microsoft-com:office:spreadsheet"  
  7.   xmlns:html = "http://www.w3.org/TR/REC-html40" >  
  8.   <ドキュメントプロパティ  xmlns = "urn:schemas-microsoft-com:office:office" >  
  9.    <作成日> 2006-09-13T11:21:51Z </作成日>  
  10.    <最終保存> 2012-04-26T13:39:57Z </最終保存>  
  11.    <バージョン> 14.00 </バージョン>  
  12.   </ドキュメントプロパティ>  
  13.   < Officeドキュメント設定  xmlns = "urn:schemas-microsoft-com:office:office" >  
  14.    < PNGを許可する/>  
  15.    <個人情報の削除/>  
  16.   </OfficeDocumentSettings>  
  17.   < Excelワークブック  xmlns = "urn:schemas-microsoft-com:office:excel" >  
  18.    <ウィンドウの高さ> 5850 </ウィンドウの高さ>  
  19.    <ウィンドウ幅> 11070 </ウィンドウ幅>  
  20.    <ウィンドウトップX > 0 </ウィンドウトップX >  
  21.    <ウィンドウ上Y > 90 </ウィンドウ上Y >  
  22.    < ProtectStructure ></ ProtectStructure >  
  23.    < ProtectWindows ></ ProtectWindows >  
  24.   </Excelワークブック>  
  25.   <スタイル>  
  26.    <スタイル  ss:ID = "デフォルト"   ss:Name = "通常" >  
  27.     <アライメント  ss:Vertical = "中央" />  
  28.     <境界線/>  
  29.     <フォント  ss:FontName = "宋体"   x:CharSet = "134"   ss:サイズ= "11"   ss:Color = "#000000" />  
  30.     <インテリア/>  
  31.     <数値形式/>  
  32.     <保護/>  
  33.    </スタイル>  
  34.    <スタイル  ss:ID = "s16" >  
  35.     <アライメント  ss:Horizo​​ntal = "左"   ss:Vertical = "中央"   ss:WrapText = "1" />  
  36.     <フォント  ss:FontName = "宋体"   x:CharSet = "134"   ss:太字= "1" />  
  37.    </スタイル>  
  38.    <スタイル  ss:ID = "s17" >  
  39.     <アライメント  ss:水平= "中央"   ss:Vertical = "中央"   ss:WrapText = "1" />  
  40.     <フォント  ss:FontName = "宋体"   x:CharSet = "134"   ss:サイズ= "12"   ss:太字= "1" />  
  41.    </スタイル>  
  42.    <スタイル  ss:ID = "s18" >  
  43.     <アライメント  ss:Horizo​​ntal = "左"   ss:Vertical = "中央"   ss:WrapText = "1" />  
  44.     <フォント  ss:FontName = "宋体"   x:CharSet = "134" />  
  45.    </スタイル>  
  46.    <スタイル  ss:ID = "s19" >  
  47.     <アライメント  ss:水平= "中央"   ss:Vertical = "中央"   ss:WrapText = "1" />  
  48.    </スタイル>  
  49.   </スタイル>  
  50.   <ワークシート  ss:Name = "三国志データ" >  
  51.    <  ss:展開列数= "16"   ss:展開行数= "682"   x:FullColumns = "1"  
  52.     x:FullRows = "1"   ss:DefaultColumnWidth = "54"   ss:DefaultRowHeight = "13.5" >  
  53.     <  ss:高さ= "28.5" >  
  54.      <セル  ss:StyleID = "s16" > <データ  ss:Type = "String" >星評価</ Data > </ Cell >  
  55.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >名前</データ> </セル>  
  56.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >コマンド</データ> </セル>  
  57.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >強制</データ> </セル>  
  58.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >インテリジェンス</データ> </セル>  
  59.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >政治</ Data > </ Cell >  
  60.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >ランサー</データ> </セル>  
  61.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >ハルバード</ Data > </ Cell >  
  62.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >クロスボウマン</ Data > </ Cell >  
  63.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >騎兵隊</ Data > </ Cell >  
  64.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >武器</ Data > </ Cell >  
  65.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" > Tongwu </ Data > </ Cell >  
  66.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >同志</ Data > </ Cell >  
  67.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >トンウジ</ Data > </ Cell >  
  68.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >同武智正</ ​​Data > </ Cell >  
  69.      <セル  ss:StyleID = "s17" > <データ  ss:Type = "String" >レベル 50 の給与</ Data > </ Cell >  
  70.     </>  
  71.     <>  
  72.      <セル  ss:StyleID = "s18" > <データ  ss:Type = "String" > ★★★★★ </データ> </セル>  
  73.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" >呂布</ Data > </ Cell >  
  74.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "数値" > 87 </データ> </セル>  
  75.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "数値" > 100 </データ> </セル>  
  76.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "数値" > 26 </データ> </セル>  
  77.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 13 </データ> </セル>  
  78.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" ></ Data > </ Cell >  
  79.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" ></データ> </セル>  
  80.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" ></データ> </セル>  
  81.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" ></データ> </セル>  
  82.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" >スパース</データ> </セル>  
  83.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "数値" > 161 </データ> </セル>  
  84.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 194 </データ> </セル>  
  85.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "数値" > 257 </データ> </セル>  
  86.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 350 </データ> </セル>  
  87.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 19250 </データ> </セル>  
  88.     </>  
  89.     <>  
  90.      <セル  ss:StyleID = "s18" > <データ  ss:Type = "String" > ★★★★★ </データ> </セル>  
  91.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" >張飛</ Data > </ Cell >  
  92.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "数値" > 85 </データ> </セル>  
  93.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "数値" > 98 </データ> </セル>  
  94.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 30 </データ> </セル>  
  95.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 22 </データ> </セル>  
  96.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" ></データ> </セル>  
  97.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" ></データ> </セル>  
  98.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" >スパース</データ> </セル>  
  99.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" ></ Data > </ Cell >  
  100.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" >スパース</データ> </セル>  
  101.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 168 </データ> </セル>  
  102.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 193 </データ> </セル>  
  103.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 264 </データ> </セル>  
  104.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 350 </データ> </セル>  
  105.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 19250 </データ> </セル>  
  106.     </>  
  107.     <>  
  108.      <セル  ss:StyleID = "s18" > <データ  ss:Type = "String" > ★★★★★ </データ> </セル>  
  109.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" >関羽</ Data > </ Cell >  
  110.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "数値" > 95 </データ> </セル>  
  111.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "数値" > 97 </データ> </セル>  
  112.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 75 </データ> </セル>  
  113.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "数値" > 62 </データ> </セル>  
  114.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" ></データ> </セル>  
  115.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" ></データ> </セル>  
  116.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" >パス</データ> </セル>  
  117.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" ></ Data > </ Cell >  
  118.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "String" >スパース</データ> </セル>  
  119.      <セル  ss:StyleID = "s19" > <データ  ss:Type = "Number" > 165 </データ> </セル>  
  120.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 191 </ data > </ cell >  
  121.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 260 </ data > </ cell >  
  122.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 347 </ data > </ cell >  
  123.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 19085 </ data > </ cell >  
  124.     </ row >  
  125.     <low>  
  126.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  127.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > ma chao </ data > </ cell >  
  128.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 88 </ data > </ cell >  
  129.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 97 </ data > </ cell >  
  130.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 44 </ data > </ cell >  
  131.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 26 </ data > </ cell >  
  132.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" ></ data > </ cell >  
  133.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > pass </ data > </ cell >  
  134.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >スパース</ data > </ cell >  
  135.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  136.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > pass </ data > </ cell >  
  137.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 168 </ data > </ cell >  
  138.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 187 </ data > </ cell >  
  139.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 259 </ data > </ cell >  
  140.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 353 </ data > </ cell >  
  141.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 19415 </ data > </ cell >  
  142.     </ row >  
  143.     <low>  
  144.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  145.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > zhao yun </ data > </ cell >  
  146.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 91 </ data > </ cell >  
  147.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 96 </ data > </ cell >  
  148.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 76 </ data > </ cell >  
  149.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 65 </ data > </ cell >  
  150.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  151.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > pass </ data > </ cell >  
  152.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  153.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  154.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  155.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 192 </ data > </ cell >  
  156.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 170 </ data > </ cell >  
  157.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 267 </ data > </ cell >  
  158.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 329 </ data > </ cell >  
  159.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 18095 </ data > </ cell >  
  160.     </ row >  
  161.     <low>  
  162.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  163.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > xu chu </ data > </ cell >  
  164.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 65 </ data > </ cell >  
  165.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 96 </ data > </ cell >  
  166.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 36 </ data > </ cell >  
  167.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 20 </ data > </ cell >  
  168.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  169.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  170.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  171.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  172.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  173.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 161 </ data > </ cell >  
  174.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 101 </ data > </ cell >  
  175.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 197 </ data > </ cell >  
  176.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 217 </ data > </ cell >  
  177.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 11935 </ data > </ cell >  
  178.     </ row >  
  179.     <low>  
  180.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  181.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > dianwei </ data > </ cell >  
  182.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 56 </ data > </ cell >  
  183.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 95 </ data > </ cell >  
  184.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 35 </ data > </ cell >  
  185.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 29 </ data > </ cell >  
  186.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  187.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  188.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  189.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  190.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  191.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 151 </ data > </ cell >  
  192.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 91 </ data > </ cell >  
  193.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 186 </ data > </ cell >  
  194.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 215 </ data > </ cell >  
  195.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 11825 </ data > </ cell >  
  196.     </ row >  
  197.     <low>  
  198.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  199.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > ganning </ data > </ cell >  
  200.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 86 </ data > </ cell >  
  201.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 94 </ data > </ cell >  
  202.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 76 </ data > </ cell >  
  203.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 18 </ data > </ cell >  
  204.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  205.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  206.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  207.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  208.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  209.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 181 </ data > </ cell >  
  210.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 183 </ data > </ cell >  
  211.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 270 </ data > </ cell >  
  212.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 351 </ data > </ cell >  
  213.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 19305 </ data > </ cell >  
  214.     </ row >  
  215.     <low>  
  216.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  217.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > pound </ data > </ cell >  
  218.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 80 </ data > </ cell >  
  219.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 94 </ data > </ cell >  
  220.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 70 </ data > </ cell >  
  221.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 44 </ data > </ cell >  
  222.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  223.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  224.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  225.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  226.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  227.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 174 </ data > </ cell >  
  228.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 150 </ data > </ cell >  
  229.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 244 </ data > </ cell >  
  230.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 288 </ data > </ cell >  
  231.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 15840 </ data > </ cell >  
  232.     </ row >  
  233.     <low>  
  234.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  235.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > wensuan </ data > </ cell >  
  236.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 78 </ data > </ cell >  
  237.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 94 </ data > </ cell >  
  238.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 25 </ data > </ cell >  
  239.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 25 </ data > </ cell >  
  240.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  241.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  242.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  243.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  244.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  245.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 172 </ data > </ cell >  
  246.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 103 </ data > </ cell >  
  247.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 197 </ data > </ cell >  
  248.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 222 </ data > </ cell >  
  249.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 12210 </ data > </ cell >  
  250.     </ row >  
  251.     <low>  
  252.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  253.      <セル  ss:styleid = "s19" > <データ  SS:Type = "String" > Huang Zhong </ data > </ cell >  
  254.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 86 </ data > </ cell >  
  255.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 93 </ data > </ cell >  
  256.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 60 </ data > </ cell >  
  257.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 52 </ data > </ cell >  
  258.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  259.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  260.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  261.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  262.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  263.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 185 </ data > </ cell >  
  264.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 171 </ data > </ cell >  
  265.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 263 </ data > </ cell >  
  266.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 321 </ data > </ cell >  
  267.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 17655 </ data > </ cell >  
  268.     </ row >  
  269.     <low>  
  270.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  271.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > taishici </ data > </ cell >  
  272.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 82 </ data > </ cell >  
  273.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 93 </ data > </ cell >  
  274.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 66 </ data > </ cell >  
  275.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 58 </ data > </ cell >  
  276.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  277.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  278.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  279.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  280.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  281.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 175 </ data > </ cell >  
  282.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 148 </ data > </ cell >  
  283.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 241 </ data > </ cell >  
  284.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 299 </ data > </ cell >  
  285.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 16445 </ data > </ cell >  
  286.     </ row >  
  287.     <low>  
  288.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  289.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > yan liang </ data > </ cell >  
  290.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 79 </ data > </ cell >  
  291.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 93 </ data > </ cell >  
  292.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 42 </ data > </ cell >  
  293.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 32 </ data > </ cell >  
  294.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  295.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  296.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  297.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  298.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  299.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 172 </ data > </ cell >  
  300.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 121 </ data > </ cell >  
  301.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 214 </ data > </ cell >  
  302.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 246 </ data > </ cell >  
  303.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 13530 </ data > </ cell >  
  304.     </ row >  
  305.     <low>  
  306.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  307.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Zhang liao </ data > </ cell >  
  308.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 93 </ data > </ cell >  
  309.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 92 </ data > </ cell >  
  310.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 78 </ data > </ cell >  
  311.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 58 </ data > </ cell >  
  312.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  313.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  314.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  315.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  316.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  317.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 183 </ data > </ cell >  
  318.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 167 </ data > </ cell >  
  319.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 257 </ data > </ cell >  
  320.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 330 </ data > </ cell >  
  321.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 18150 </ data > </ cell >  
  322.     </ row >  
  323.     <low>  
  324.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  325.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > sun ce </ data > </ cell >  
  326.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 92 </ data > </ cell >  
  327.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 92 </ data > </ cell >  
  328.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 69 </ data > </ cell >  
  329.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 70 </ data > </ cell >  
  330.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  331.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  332.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  333.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  334.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  335.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 130 </ data > </ cell >  
  336.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 192 </ data > </ cell >  
  337.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 230 </ data > </ cell >  
  338.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 325 </ data > </ cell >  
  339.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 17875 </ data > </ cell >  
  340.     </ row >  
  341.     <low>  
  342.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  343.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > wei yan </ data > </ cell >  
  344.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 81 </ data > </ cell >  
  345.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 92 </ data > </ cell >  
  346.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 69 </ data > </ cell >  
  347.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 49 </ data > </ cell >  
  348.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  349.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  350.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  351.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > super </ data > </ cell >  
  352.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  353.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 173 </ data > </ cell >  
  354.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 150 </ data > </ cell >  
  355.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 242 </ data > </ cell >  
  356.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 291 </ data > </ cell >  
  357.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 16005 </ data > </ cell >  
  358.     </ row >  
  359.     <low>  
  360.      <セル  ss:styleid = "s18" > < data   ss:type = "string" > ★★★★ </ data > </ cell >  
  361.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > huaxiong </ data > </ cell >  
  362.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 81 </ data > </ cell >  
  363.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 92 </ data > </ cell >  
  364.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 56 </ data > </ cell >  
  365.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 40 </ data > </ cell >  
  366.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  367.      <セル  ss:styleid = "s19" > <データ  SS:type = "string" > Transport </ data > </ cell >  
  368.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  369.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" > god </ data > </ cell >  
  370.      <セル  ss:styleid = "s19" > <データ  ss:type = "string" >たわごと</ data > </ cell >  
  371.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 173 </ data > </ cell >  
  372.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 137 </ data > </ cell >  
  373.      <セル  ss:styleid = "s19" > <データ  SS:type = "number" > 229 </ data > </ cell >  
  374.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 269 </ data > </ cell >  
  375.      <セル  ss:styleid = "s19" > <データ  ss:type = "number" > 14795 </ data > </ cell >  
  376.     </ row >  

最終的な実行結果は、次のようにスクリーンショットです。

将軍のデータは、図に示されているように読まれました。


実行後のいくつかのスクリーンショット:

オリジナルリンク:http://blog.csdn.net/lufeng20/article/details/7542955

【編集者のおすすめ】

  1. Javaの同等のインターフェイスのトラップ
  2. Apache CXF実用的な3つ:Javaオブジェクトを転送します
  3. Javaプログラミング:グラフィックとマルチメディア処理
  4. Java Excel APIと詳細なチュートリアル
  5. Javaグラフィックインターフェイス開発:高度なスイングコンテナ(III)

<<:  rsyncのコアアルゴリズム

>>:  Baidu がモバイル検索ランキングアルゴリズムを調整し、アプリのランキング結果を改善

推薦する

人工知能はあなたの目を見るだけであなたの性格を理解できる

[[238546]]目は魂の窓です。科学者たちは、目の動きを通じて「心を読む」ことができる人工知能を...

人工知能は諜報機関の「大物」になると期待されている

諜報活動は私たちが想像するよりもはるかに退屈で複雑です。現在、米国の諜報機関は、手作業に代わる人工知...

ワールドモデルや DriveGPT などの大規模モデルは自動運転に何をもたらすのでしょうか?

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

これらの 10 個のオープンソース機械学習ツールを使用したことがありますか?

機械学習開発者として、あなたは多くの機械学習リソースに遭遇したことがあるかもしれません。今日は、オー...

...

ドローンやAIなどハイテクが大学入試特別編をエスコート!

昨日(7月7日)、流行病の影響で延期されていた2020年度大学入試センター試験が正式に始まりました。...

モデルデータに偏りがある場合はどうすればいいですか?機械学習における 7 種類のデータバイアスについて 1 つの記事で学ぶ

機械学習におけるデータバイアスとは、データセットの一部の要素が他の要素よりも重み付けされ、または高く...

中国 NeurIPS の著者の 54% が米国へ:ケンブリッジ AI パノラマ レポートが発表

NeurIPSに受理された論文のうち、著者の29%は中国の大学で学士号を取得していますが、そのうち...

Google AI チームが新しい「流体アノテーション」を発表: 画像アノテーションの速度が 3 倍に向上

(原題: Google が新しいソリューションを発表、画像注釈の速度が 3 倍に向上) [[2505...

この記事は人工知能について最も分かりやすく解説しています:原理、技術、そして将来

Facebookの公式ブログが更新されました。FAIRのディレクターでディープラーニングの代表である...

工業情報化部:電話ネットワークアクセスの物理チャネルに肖像マッチング技術を導入

今年12月1日より、物理チャネルでは顔認識技術対策を全面的に導入し、電話ネットワークへのアクセスプロ...

「Google版SORA」はぼやけたグラフィックで嘲笑されたが、世界シミュレーターとして新たな一歩を踏み出した。

インタラクティブな仮想世界を作成するために使用される、Google の 110 億のパラメータ Ge...

ChatGPT コード生成が 10% 増加しました。北京大学中国人第一著者:プロンプトを改良し、大規模モデルのコーディング機能を大幅に改善

大規模モデルの時代では、高品質なコード生成が驚くほど強力になりました。 HumEval のテストで ...

アンサンブル法からニューラルネットワークまで:自動運転技術で使用される機械学習アルゴリズムとは?

現在、機械学習アルゴリズムは、自動運転車業界で増加している問題を解決するために大規模に使用されていま...