3차 과제

아래 코드는 인터넷 데이터 저장소로부터 아이리스(붓꽃) 데이터(iris.data)를 2차원 넘파이 어레이로 불러온다.

iris.data 파일에는 아래 형식의 데이터가 150개 들어 있다.

5.1,3.5,1.4,0.2,Iris-setosa

하나의 데이터에 사용된 값들은 하나의 아이리스(붓꽃)에 대한 꽃잎, 꽃받침과 관련된 특성(features)과 품종을 나타내며, 보다 구체적으로 아래 순서를 따른다.

꽃받침 길이, 꽃받침 너비, 꽃잎 길이, 꽃잎 너비, 품종

길이와 너비를 저장하는 특성들은 숫자로 저장되어 있었지만 위 코드는 문자열로 저장된 품종 특성과의 자료형을 통일시키기 위해 모두 문자열 자료형으로 불러왔다. 처음 5개 데이터를 확인하면 다음과 같다.

참고: '<U15'는 길이가 최대 15인 유니코드 문자열 자료형을 나타낸다.

수치형 데이터와 품종 데이터를 분리해서 각각 (150,4), (150,) 모양의 어레이를 생성하자. 이때 수치형 데이터는 'f8', 즉 'float64' 자료형을 사용하도록 한다.

150개의 데이터는 아래 세 개의 품종으로 구분되며, 각각 50개씩 아래 언급된 순서대로 구분되어 있다.

'Iris-setosa', 'Iris-versicolor', 'Iris-virginica'

즉, 0번, 50번, 100번부터 각 품종의 데이터가 시작된다.

과제 1. 꽃잎 길이(2번 열)가 1.5보다 크거나 꽃받침 길이(0번 열)가 5.0보다 작은 데이터만 추출하라.

과제 2. 꽃받침 길이(0번 열)와 꽃잎 길이(2번 열) 사이의 상관관계를 계산하라.

힌트: 넘파이의 적절한 함수를 활용한다. 상관계수에 대한 설명은 위키백과: 상관분석을 참고한다.

과제 3. 아래 식으로 계산된 값을 갖는 새로운 열(column)이 추가된 2차원 어레이  iris_features_added를 생성하라.

$$\frac{\text{원주율} \times \text{꽃잎길이} \times \text{꽃받침길이}^2}{3} $$

힌트: np.stack() 함수를 활용할 수 있다.

과제 4. Iris_versicolor 품종에 해당하는 데이터만 iris_features로부터 추출하라.

과제 5. 꽃받침 길이(0번 열)의 평균값(mean), 중앙값(median), 표준편차(standard deviation)를 구하라.

과제 6. 세 개의 품종 별 꽃받침 너비(1번 열)의 평균값을 계산하여 아래 어레이와 동일한 모양을 갖는 어레이 iris_kind_sepal_length를 생성하라.

[['Iris-setosa', 3.418],
 ['Iris-versicolor', 2.770],
 ['Iris-virginica', 2.974]]

과제 7. 꽃잎 너비(3번 열)에 사용된 값을 모두 0과 1사이의 값으로 변환하라.

힌트: 꽃잎 너비 등 하나의 특성에 속하는 값을 모두 0과 1사이의 값으로 변환하는 작업을 정규화(normalization)라 한다. 정규화에 대한 설명은 정규화/표준화를 참고하라.

과제 8. iris_features에 사용된 모든 값을 특성 별로 표준화(standardization)하라.

힌트: 표준화에 대한 설명은 정규화/표준화를 참고하라.