"
],
"text/plain": [
" Gender Height Weight Label\n",
"165 Male 181 78 Normal\n",
"231 Female 153 78 Normal\n",
"234 Male 145 78 Obesity"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bmi.loc[bmi['Weight']==78]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "4f8cfd0f",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T02:18:36.654659Z",
"start_time": "2023-01-26T02:18:36.638658Z"
}
},
"outputs": [],
"source": [
"bmi.loc[231,'Label'] = 'Obesity'"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "e74caea1",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T02:18:44.966738Z",
"start_time": "2023-01-26T02:18:44.950738Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"'Obesity'"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bmi.loc[231,'Label']"
]
},
{
"cell_type": "markdown",
"id": "ca3c72c9",
"metadata": {},
"source": [
"### 모델 선택 및 하이퍼 파라미터 튜닝\n",
"- 머신러닝 모델을 불러와서 사용하는 단계\n",
"- 머신러닝 모델의 학습에 변화를 주고 싶다 - 하이퍼 파라미터 튜닝\n",
"- 하이퍼 파라미터 = 수정 가능한 파라미터"
]
},
{
"cell_type": "markdown",
"id": "ba58966f",
"metadata": {},
"source": [
"#### 모델 로드\n",
"- KNN 모델 : 머신러닝 모델"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "7810a1ff",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T02:40:14.334710Z",
"start_time": "2023-01-26T02:40:14.327710Z"
}
},
"outputs": [],
"source": [
"from sklearn.neighbors import KNeighborsClassifier\n",
"knn_bmi = KNeighborsClassifier(n_neighbors=5)"
]
},
{
"cell_type": "markdown",
"id": "1ec24f23",
"metadata": {},
"source": [
"#### 문제와 정답 분리"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "372f66f3",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T02:35:59.208948Z",
"start_time": "2023-01-26T02:35:59.193951Z"
}
},
"outputs": [],
"source": [
"# 문제 = Height, Weight\n",
"X = bmi.loc[:,'Height':'Weight']\n",
"\n",
"# 정답 = Label\n",
"y = bmi.loc[:,'Label']"
]
},
{
"cell_type": "markdown",
"id": "ba610248",
"metadata": {},
"source": [
"#### 훈련(train)과 평가(test)로 분리\n",
"- 훈련 : 평가 = 7 : 3"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6e47d0fe",
"metadata": {},
"outputs": [],
"source": [
"X_train = X.iloc[:350]\n",
"X_test = X.iloc[350:]\n",
"y_train = y.iloc[:350]\n",
"y_test = y.iloc[350:]"
]
},
{
"cell_type": "markdown",
"id": "e94320a7",
"metadata": {},
"source": [
"##### 훈련, 평가 데이터 분리 함수"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "12f0872e",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T02:36:01.858541Z",
"start_time": "2023-01-26T02:36:01.839540Z"
}
},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "72f5e7c9",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T02:36:35.543103Z",
"start_time": "2023-01-26T02:36:35.535103Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"((350, 2), (150, 2), (350,), (150,))"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.shape, X_test.shape, y_train.shape, y_test.shape"
]
},
{
"cell_type": "markdown",
"id": "600ff0d8",
"metadata": {},
"source": [
"### 학습"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "69788d8f",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T02:42:54.653079Z",
"start_time": "2023-01-26T02:42:54.640057Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"KNeighborsClassifier()"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# fit(문제, 정답)\n",
"# KNN 모델 BMI데이터를 학습 > BMI데이터에 대한 규칙을 찾음\n",
"# X데이터(Height, Weight)를 통해서 y데이터(Label)의 규칙을 찾음\n",
"knn_bmi.fit(X_train,y_train)"
]
},
{
"cell_type": "markdown",
"id": "328ae7a5",
"metadata": {},
"source": [
"### 평가\n",
"- 모델이 제대로 만들어졌는지 평가 = score\n",
"- 새로운 데이터에 대해서 예측 = predict"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "aac54303",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T02:47:39.810240Z",
"start_time": "2023-01-26T02:47:39.800240Z"
},
"collapsed": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\base.py:450: UserWarning: X does not have valid feature names, but KNeighborsClassifier was fitted with feature names\n",
" warnings.warn(\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n"
]
},
{
"data": {
"text/plain": [
"array(['Normal'], dtype=object)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 예측\n",
"# predict(문제)\n",
"# 문제는 2차원 데이터\n",
"knn_bmi.predict([[174,68]])"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "4bdf5ddd",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T03:06:01.724597Z",
"start_time": "2023-01-26T03:06:01.704598Z"
},
"collapsed": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n"
]
},
{
"data": {
"text/plain": [
"0.8933333333333333"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 만들어진 모델을 평가\n",
"# score(문제데이터, 정답데이터)\n",
"# X_test가 예측한 정답과 정답 데이터(y_test)를 비교\n",
"knn_bmi.score(X_test,y_test)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "da1af84f",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T03:07:44.203932Z",
"start_time": "2023-01-26T03:07:44.176929Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n"
]
},
{
"data": {
"text/plain": [
"0.9428571428571428"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 학습을 할 때 사용된 데이터이기 때문에 test데이터보다 score값이 높음\n",
"knn_bmi.score(X_train,y_train)"
]
},
{
"cell_type": "markdown",
"id": "7917b8c9",
"metadata": {},
"source": [
"### 하이퍼 파라미터 튜닝\n",
"- KNN모델의 하이퍼 파라미터(n_neighbors)의 변화에 따라 score값을 확인"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "397530c3",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T03:30:19.870352Z",
"start_time": "2023-01-26T03:30:19.402109Z"
},
"collapsed": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n",
"C:\\Users\\SMHRD\\anaconda3\\lib\\site-packages\\sklearn\\neighbors\\_classification.py:228: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
" mode, _ = stats.mode(_y[neigh_ind, k], axis=1)\n"
]
}
],
"source": [
"# 점수를 저장할 list 생성\n",
"train_acc = []\n",
"test_acc = []\n",
"\n",
"# n_neighbors를 1~30까지 돌림\n",
"for i in range(1,31):\n",
" # n_neighbors를 변경해가면서 모델 생성\n",
" knn = KNeighborsClassifier(n_neighbors=i)\n",
" \n",
" # 생성된 모델에 학습\n",
" knn.fit(X_train,y_train)\n",
" \n",
" # 만들어진 규칙으로 score 값 저장\n",
" train_acc.append(knn.score(X_train,y_train))\n",
" test_acc.append(knn.score(X_test,y_test))\n",
" \n",
" # print(f\"{i}번째 score : {knn.score(X_test,y_test)}\")"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "d4fbe06c",
"metadata": {
"ExecuteTime": {
"end_time": "2023-01-26T03:30:22.967107Z",
"start_time": "2023-01-26T03:30:22.840434Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# x 축 = n_neighbors = range(1,31)\n",
"# y 축 = score\n",
"plt.plot(range(1,31), train_acc, label='Train')\n",
"plt.plot(range(1,31), test_acc, label='Test')\n",
"plt.legend()\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.13"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 5
}