<commit_before># coding: UTF-8
#	
#	--- Iris.py ---
# Irisのデータを用いてtsaliisエントロピー正則化FCM法を試す
#


import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets as ds 
from sklearn.metrics import accuracy_score
import random
import math
import sys
import copy


def main():

  # Irisのデータを読み込む
  iris = ds.load_iris() # Irisのデータをロードする
  data = iris.data  # Irisの4次元データ(150個)
  target = iris.target  # 正解 [0,0,0,1....
  
  # 標準偏差を表示する
  # print "std="+str(np.std(x))

  #	各種パラメータの設定
  C = 3	# v length
  N = 150	# x length
  P = 4	# Demention
  Thigh = 20
  q = 1.1


  # fcmで求める 
  result = fcm(data,P,N,C,Thigh,q)
  predict = result[0]
  loop = result[1]

  # 正解とpredictを表示
  print "target="
  np.savetxt(sys.stdout,target[None],fmt='%.0f',delimiter=' ')

  print "predict="
  np.savetxt(sys.stdout,predict[None],fmt='%.0f',delimiter=' ')

  #	正答率を表示
  score = accuracy_score(target,predict)
  print str(score*100) + "% (" + str(score*N) + "/" + str(N) + ")"

  #	ループ回数の表示
  print "loop=" + str(loop)



#
# 収束判定のための移動度を求める関数
# @param v1
# @param v2
#
def distance(v1,v2):
  max = 0.0
  for i in range(len(v1)):
    score = np.linalg.norm(v1[i]-v2[i])
    if max > score:
      max = score
  return max

#
# 目的関数Jfcm
# この関数を最小化するのが目的
# @param u
# @param x
# @param v
# @param q
def jfcm(u,x,v,q):
	score = 0.0
	for k in range(len(x)):
		for i in range(len(v)):
			dik = np.linalg.norm(v[i]-x[k])
			score += (u[i][k] ** q) * dik  	
	return score


#
# fuzzy_clustring_method
# ファジィクラスタリングを実行する
#
# 1.クラスタ中心vをランダムに決定する
# 2.帰属度関数uをゼロクリアする
# 3.以下の操作を繰り返す
# 3-1.ループ回数を更新する
# 3-2.温度を更新する
# 3-3.uを更新する
# 3-4.vを更新する<commit_msg>add print score<commit_after># coding: UTF-8
#	
#	--- Iris.py ---
# Irisのデータを用いてtsaliisエントロピー正則化FCM法を試す
#


import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets as ds 
from sklearn.metrics import accuracy_score
import random
import math
import sys
import copy


def main():

  # Irisのデータを読み込む
  iris = ds.load_iris() # Irisのデータをロードする
  data = iris.data  # Irisの4次元データ(150個)
  target = iris.target  # 正解 [0,0,0,1....
  
  # 標準偏差を表示する
  # print "std="+str(np.std(x))

  #	各種パラメータの設定
  C = 3	# v length
  N = 150	# x length
  P = 4	# Demention
  Thigh = 20
  q = 1.1


  # fcmで求める 
  result = fcm(data,P,N,C,Thigh,q)
  predict = result[0]
  loop = result[1]

  # 正解とpredictを表示
  print "target="
  np.savetxt(sys.stdout,target[None],fmt='%.0f',delimiter=' ')

  print "predict="
  np.savetxt(sys.stdout,predict[None],fmt='%.0f',delimiter=' ')

  #	正答率を表示
  score = accuracy_score(target,predict)
  print str(score*100) + "% (" + str(score*N) + "/" + str(N) + ")"

  #	ループ回数の表示
  print "loop=" + str(loop)



#
# 収束判定のための移動度を求める関数
# @param v1
# @param v2
#
def distance(v1,v2):
  max = 0.0
  for i in range(len(v1)):
    score = np.linalg.norm(v1[i]-v2[i])
    print score
    if max > score:
      max = score
  return max

#
# 目的関数Jfcm
# この関数を最小化するのが目的
# @param u
# @param x
# @param v
# @param q
def jfcm(u,x,v,q):
	score = 0.0
	for k in range(len(x)):
		for i in range(len(v)):
			dik = np.linalg.norm(v[i]-x[k])
			score += (u[i][k] ** q) * dik  	
	return score


#
# fuzzy_clustring_method
# ファジィクラスタリングを実行する
#
# 1.クラスタ中心vをランダムに決定する
# 2.帰属度関数uをゼロクリアする
# 3.以下の操作を繰り返す
# 3-1.ループ回数を更新する
# 3-2.温度を更新する
# 3-3.uを更新する
# 3-4.vを更新する
{'fraction_non_alphanumeric': 0.1577344701583435, 'fraction_numerical': 0.028623629719853837, 'mean_word_length': 3.2607003891050583, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '454135', 'n_tokens_mistral': 1821, 'n_tokens_neox': 1742, 'n_words': 301}