У меня есть текстовый файл (test.data), который содержит некоторые значения и имя класса, например,
4.5,3.5,U1
4.5,10.5,U2
4.5,6,U1
3.5,10.5,U2
3.5,10.5,U2
5,7,U1
7,6.5,U1
Мне нужно классифицировать эти данные по строкам (матрице), где 1,2 строки и т. Д.это данные, последний класс.Поэтому я начал с этого кода:
reader = csv.reader(open('test.data', 'r'))
result = []
for row in reader:
result.append(row)
print result
output:
[['4.5', '3.5', 'U1'], ['4.5', '10.5', 'U2'], ['4.5', '6', 'U1'], ['3.5', '10.5', 'U2'], ['3.5', '10.5', 'U2'], ['5', '7', 'U1'], ['7', '6.5', 'U1']]
Все это работает нормально, но теперь мне нужно из этих данных сделать матричную классификацию.В этом случае я хочу сделать матрицу:
test data=[data1, data2,.....,class name1]
test data2=[data1, data2,.....,class name2]...
Мне нужна эта "матрица" (данные испытаний, данные испытаний2) , потому что я буду выбирать из каждых данных испытаний просто 2/3 данные, которые будут называться " choosen ", остальные 1/3 данные должны оставаться в данных теста, ....
Такчто мне нужно в качестве вывода:
choosen=[data,data,......class name1] # 2/3 from every **test.data**
test data=[data1, data2,.....,class name1] # other 1/3 from test data
test data2=[data1, data2,.....,class name1] # other 1/3 from test data 2
.
.,,.
.
Большое спасибо за помощь
EDIT2:
Если я использую ваш код, яполучить:
{
'U1': [
['4.5','3.5'],
['4.5','6'],
['5','7'],
['7','6.5']
],
'U2': [
['4.5','10.5'],
['3.5','10.5'],
['3.5','10.5']
]
}
Но у меня не каждый раз, когда эти данные:
4.5,3.5,U1
4.5,10.5,U2
4.5,6,U1
3.5,10.5,U2
3.5,10.5,U2
5,7,U1
7,6.5,U1
У меня также:
4.5,3.5,4.5,10.5, U1
3.5,10.5,3.5,10.5,U2
4.5,12.5,3.5,12.5,U2
...... (поэтому я не знаю, что класс находится во второй строке, как вы пишете в своем коде), но я знаю, что последняя строка - это CLASS
Так как я могу изменить ваш код:
reader = csv.reader(open('test.data', 'r'))
result = {}
for row in reader:
uclass=row[2] #-------> must be last row not second !!!!
if result.has_key(uclass):
result[uclass].append([row[0],row[1]]) #---->not just 2 row's, on other data I have for example 5 rows..
else:
result[uclass]=[[row[0],row[1]]] #---->not just 2 row's, on other data I have for example 5 rows..
print repr(result)