---
# System prepended metadata

title: 210608_面談本田
tags: [面談]

---

###### tags: `面談`
# 210608_面談本田

### 進捗
- Weka導入
- 分類

---
### 目標の確認
- 最終目標：
    - n人の患者データのうち，n-k人のデータを用いて学習し，k人の未知データの重症度を識別する

- 当面の目標
    - 先方に識別できそうなのか示す 
    -  → 1人の患者データを用いて，学習し，同じ患者のデータを識別する

---

指先画像の例
![](https://i.imgur.com/isaBwu6.png)


### 実験1

【データセット】
患者1のブレがない良好な全画像
・重症度0：4日分 → 32指先画像
・重症度1：16日分 → 128指先画像

・10回の交差検証・平均
|| a | b  |
|--| ----|---- | 
|a| 20    |12    | 
|b| 3    |125    |
（a=重症度0，b=重症度1）

正解率：90.625% 145/160

重症度0の指先画像に対して，3/20の画像で誤判定
重症度1の指先画像に対して，12/125の画像で誤判定


#### 考察
同じ画像の別の指先が学習データに含まれているので良好な結果になった？

---

### 実験2

【データセット】
学習
・重症度0：3日分
・重症度1：14日分

テスト
・重症度0：1日分
・重症度1：2日分


|| a | b  |
|--| ----|---- | 
|a| 5    |3    | 
|b| 0    |16    |
（a=重症度0，b=重症度1）

正解率：87.5% 21/24

重症度0の指先画像3枚に対して，「1」と誤判定

#### 考察
重症度0の画像が4日分しかなく，データに偏りがあるため
どう評価すべきか分からない




### 今後の課題
- 16色パッチ色補正の実装，比較
- 特徴量検討


<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>


### MEMO

- Weka で classは数値じゃなくて，Nomial 文字列にしないと精度出してくれない
- 指数表示を止める



```
# Wekaで使用できるデータを構築する
# 
# csv → arff に変換
# 
# 【arffの構成】
# @relation keyboard データセット名：なんでもいい
#
# @attribute time real 属性名：数値
# @attribute speed real
# @attribute angle real
# @attribute curve real
# @attribute emotion {sad, happy} 属性名：数値じゃないので，その区別をここに記す 
#                                 最後の欄に，分類したいもの
#
# @data  実際のデータ，並びは上で指定した順番にする
# 1,0.1,46,1.81,sad
# 2,0.6,187,4.7,happy
# 
# #


import csv
import os

fileToRead = "../P3.csv"  #読み込むcsv
fileToWrite = os.path.splitext(fileToRead)[0] +".arff" #出力arff名
relation = "HFSdataset" #how you'll like to call your relation as.

dataType = [] # Stores data types 'nominal' and 'numeric'
columnsTemp = [] # Temporary stores each column of csv file except the attributes
uniqueTemp = [] # Temporary Stores each data cell unique of each column
uniqueOfColumn = [] # Stores each data cell unique of each column
dataTypeTemp = [] # Temporary stores the data type for cells on each column
finalDataType = [] # Finally stores data types 'nominal' and 'numeric'
attTypes = [] # Stores data type 'numeric' and nominal data for attributes
p = 0 # pointer for each cell of csv file

writeFile = open(fileToWrite, 'w')

#Opening and Reading a CSV file
f = open(fileToRead, 'r')
reader = csv.reader(f)
allData = list(reader)
attributes = allData[0]
totalCols = len(attributes)
totalRows = len(allData)
f.close()

# Add a '0' for each empty cell
for j in range(0,totalCols):
	for i in range(0,totalRows):
		if 0 == len(allData[i][j]):
			allData[i][j] = "0"

# check for comams or blanks and adds single quotes
for j in range(0,totalCols):
	for i in range(1,totalRows):
		allData[i][j] = allData[i][j].lower()
		if "\r" in allData[i][j] or '\r' in allData[i][j] or "\n" in allData[i][j] or '\n' in allData[i][j]:
			allData[i][j] = allData[i][j].rstrip(os.linesep)
			allData[i][j] = allData[i][j].rstrip("\n")
			allData[i][j] = allData[i][j].rstrip("\r")
		try:
			if allData[i][j] == str(float(allData[i][j])) or allData[i][j] == str(int(allData[i][j])):
				print
		except ValueError as e:
				allData[i][j] = "'" + allData[i][j] + "'"

# fin gives unique cells for nominal and numeric
for j in range(0,totalCols):
	for i in range(1,totalRows):
		columnsTemp.append(allData[i][j])
	for item in columnsTemp:
		if not (item in uniqueTemp):
			uniqueTemp.append(item)
	uniqueOfColumn.append("{" + ','.join(uniqueTemp) + "}") 
	uniqueTemp = []
	columnsTemp = []

# Assigns numeric or nominal to each cell
for j in range(1,totalRows):
	for i in range(0,totalCols):
		try:
			if allData[j][i] == str(float(allData[j][i])) or allData[j][i] == str(int(allData[j][i])):
				dataType.append("numeric")
		except ValueError as e:
				dataType.append("nominal")

for j in range(0,totalCols): 
	p = j
	for i in range(0,(totalRows-1)): 
		dataTypeTemp.append(dataType[p])
		p += totalCols  
	if "nominal" in dataTypeTemp:
		finalDataType .append("nominal")
	else:
		finalDataType .append("numeric")
	dataTypeTemp = []

for i in range(0,len(finalDataType )):
	if finalDataType [i] == "nominal":
		attTypes.append(uniqueOfColumn[i])
	else:
		attTypes.append(finalDataType[i])

# Show comments
writeFile.write("%\n% Comments go after a '%' sign.\n%\n")
writeFile.write("%\n% Relation: " + relation +"\n%\n%\n")
writeFile.write("% Attributes: " + str(totalCols) + " "*5 
	+ "Instances: " + str(totalRows-1) + "\n%\n%\n\n")

# Show Relation
writeFile.write("@relation " + relation + "\n\n")

# Show Attributes
for i in range(0,totalCols):
	writeFile.write("@attribute" + " '" + attributes[i] 
		+ "' " + attTypes[i] + "\n")

# Show Data
writeFile.write("\n@data\n")
for i in range(1,totalRows):
	writeFile.write(','.join(allData[i])+"\n")

print(fileToWrite + " was converted to " + fileToRead)


```

```

['filename','class', 'aveR', 'aveG', 'aveB','midR','midG','midB', \
		'stdR','stdG','stdB','modeR','modeG','modeB', \
		'skeR','skeG','skeB', 'kurtoR','kurtoG','kurtoB', \
		'entropyR','entropyG','entropyB','contrastR','contrastG','contrastB', \
		'correlationR','correlationG','correlationB','energyR','energyG','energyB','uniformR','uniformG','uniformB']
        
        
```