Является ли правильной интерпретация приведенной ниже визуализации данных, в которой используются библиотеки Python? - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь отработать навыки работы с данными на реальных данных.Я получил данные о раке молочной железы по ссылке .Конкретный файл с данными, которые я использую: breast-cancer-wisconsin.data.

После загрузки файла я попытался получить большое изображение данных, поэтому я сделал:

import numpy as np
from sklearn import preprocessing, cross_validation, neighbors
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('breast-cancer-wisconsin.data.txt')
print(df.head())  

Который возвращает следующую таблицу в качестве вывода:

id  clump_thickness  unif_cel_size  unif_cel_shape  marg_adhesion  \
0  1000025                5              1               1              1   
1  1002945                5              4               4              5   
2  1015425                3              1               1              1   
3  1016277                6              8               8              1   
4  1017023                4              1               1              3   

   single_epith_cell_size bare_nuclei  bland_chrom  norm_nucleoli  mitoses  \
0                       2           1            3              1        1   
1                       7          10            3              2        1   
2                       2           2            3              1        1   
3                       3           4            3              7        1   
4                       2           1            3              1        1   

   class  
0      2  
1      2  
2      2  
3      2  
4      2  

Чтение документации 'набора данных' Я понял, что в последнем столбце, касающемся классов, есть две опции: 2 и 4. Число 2 используется для доброкачественнойопухоль, а число 4 используется для злокачественной опухоли.

Я решил исследовать столбец unif_cel_size, который указывает по шкале от 1 до 10 «Однородность размера клеток».Поэтому я построил следующую гистограмму:

import numpy as np
from sklearn import preprocessing, cross_validation, neighbors
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('breast-cancer-wisconsin.data.txt')
print(df.head())  
df['unif_cel_size'].hist()
plt.show()

Изображение, которое возвращает код:

enter image description here

Я решил, что оноБыло бы интересно посмотреть, как гистограмма изменится, если вы сгруппируете клетки как злокачественные и доброкачественные.Итак, я сделал:

import numpy as np
from sklearn import preprocessing, cross_validation, neighbors
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('breast-cancer-wisconsin.data.txt')
print(df.head())  
df.groupby('class')['unif_cel_size'].hist()
plt.show()

И вывод:

enter image description here

Теперь мы дошли до моего сомнения.Моя интерпретация этого результата была такой: связь между размерами клеток и типами опухолей асимметрична.Один из классов концентрируется на небольших размерах, а другой - на больших размерах клеток.

(i) Правильна ли эта интерпретация?Я делаю какую-то ошибку?

(ii) Как я могу использовать matplotlib, чтобы указать, какой цвет представляет какой класс?

Заранее спасибо.

1 Ответ

1 голос
/ 22 июня 2019

(i) Ваша интерпретация верна.Однако, если вы хотите быть еще более тщательным, вы можете провести статистический тест, чтобы оценить, насколько значительна эта разница (вероятно, она будет очень существенной)

(ii) Если вам нужна легенда, это работает:

df.groupby('class')['unif_cel_size'].plot(kind='hist',legend=True)

Если вы заинтересованы в дальнейшем развитии науки о данных, вы можете попытаться увидеть, насколько хорошим предиктором является неравномерность размера ячейки (и, возможно, другие факторы).В этом случае вы бы разбили свой набор данных на обучающие и тестируемые, и построили модель (например, с помощью sklearn и выполнили некоторую логистическую модель).

...