UPDATE

上级 e6376ef1
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 异常值检测"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Looking in indexes: http://mirrors.csdn.net.cn/repository/csdn-pypi-mirrors/simple\n",
"Requirement already satisfied: pandas in /usr/local/lib/python3.8/dist-packages (2.0.1)\n",
"Requirement already satisfied: openpyxl in /usr/local/lib/python3.8/dist-packages (3.1.2)\n",
"Requirement already satisfied: xlrd==1.2.0 in /usr/local/lib/python3.8/dist-packages (1.2.0)\n",
"Requirement already satisfied: python-dateutil>=2.8.2 in /root/.local/lib/python3.8/site-packages (from pandas) (2.8.2)\n",
"Requirement already satisfied: numpy>=1.20.3 in /usr/local/lib/python3.8/dist-packages (from pandas) (1.24.3)\n",
"Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.8/dist-packages (from pandas) (2023.3)\n",
"Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.8/dist-packages (from pandas) (2023.3)\n",
"Requirement already satisfied: et-xmlfile in /usr/local/lib/python3.8/dist-packages (from openpyxl) (1.1.0)\n",
"Requirement already satisfied: six>=1.5 in /root/.local/lib/python3.8/site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n",
"\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n",
"\u001b[0m\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip available: \u001b[0m\u001b[31;49m22.2.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m23.1.2\u001b[0m\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"pip install pandas openpyxl xlrd==1.2.0"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'outlier_values': array([ 51. , 6607.4, 865. ]),\n",
" 'outlier_index': array([ 0, 8, 15]),\n",
" 'outlier_ratio': 0.15789473684210525}"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"\n",
"def detect_outliers(data):\n",
" # 使用numpy中的percentile函数计算百分位数\n",
" data=np.array(data)\n",
" q1, q3 = np.percentile(data, [25, 75])\n",
" iqr = q3 - q1 # 计算四分位距\n",
" upper_bound = q3 + 1.5 * iqr # 计算上界\n",
" lower_bound = q1 - 1.5 * iqr # 计算下界\n",
"\n",
" # 判断异常值,大于上界或小于下界的值即为异常值\n",
" outliers = data[(data > upper_bound) | (data < lower_bound)]\n",
" outlier_index = np.where((data > upper_bound) | (data < lower_bound))[0]\n",
"\n",
" # 计算异常值比例\n",
" outlier_ratio = len(outliers) / len(data)\n",
"\n",
" # 将结果存储到字典中\n",
" result = {\n",
" 'outlier_values': outliers,\n",
" 'outlier_index': outlier_index,\n",
" 'outlier_ratio': outlier_ratio\n",
" }\n",
" return result\n",
"detect_outliers([51, 2618.2, 2608.4, 2651.9, 3442.1, 3393.1, 3136.1, 3744.1,\n",
" 6607.4, 4060.3, 3614.7, 3295.5, 2332.1, 2699.3, 3036.8,\n",
" 865, 3014.3, 2742.8, 2173.5])"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.8.10"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# LinearRegression预测数值"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Looking in indexes: http://mirrors.csdn.net.cn/repository/csdn-pypi-mirrors/simple\n",
"Requirement already satisfied: pandas in /usr/local/lib/python3.8/dist-packages (2.0.1)\n",
"Requirement already satisfied: openpyxl in /usr/local/lib/python3.8/dist-packages (3.1.2)\n",
"Requirement already satisfied: xlrd==1.2.0 in /usr/local/lib/python3.8/dist-packages (1.2.0)\n",
"Requirement already satisfied: scikit-learn in /usr/local/lib/python3.8/dist-packages (1.2.2)\n",
"Collecting matplotlib\n",
" Downloading http://mirrors.csdn.net.cn/repository/csdn-pypi-mirrors/packages/matplotlib/3.7.1/matplotlib-3.7.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (9.2 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.2/9.2 MB\u001b[0m \u001b[31m218.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: python-dateutil>=2.8.2 in /root/.local/lib/python3.8/site-packages (from pandas) (2.8.2)\n",
"Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.8/dist-packages (from pandas) (2023.3)\n",
"Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.8/dist-packages (from pandas) (2023.3)\n",
"Requirement already satisfied: numpy>=1.20.3 in /usr/local/lib/python3.8/dist-packages (from pandas) (1.24.3)\n",
"Requirement already satisfied: et-xmlfile in /usr/local/lib/python3.8/dist-packages (from openpyxl) (1.1.0)\n",
"Requirement already satisfied: scipy>=1.3.2 in /usr/local/lib/python3.8/dist-packages (from scikit-learn) (1.10.1)\n",
"Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from scikit-learn) (1.2.0)\n",
"Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.8/dist-packages (from scikit-learn) (3.1.0)\n",
"Collecting contourpy>=1.0.1\n",
" Downloading http://mirrors.csdn.net.cn/repository/csdn-pypi-mirrors/packages/contourpy/1.0.7/contourpy-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (300 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m300.0/300.0 kB\u001b[0m \u001b[31m209.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: packaging>=20.0 in /root/.local/lib/python3.8/site-packages (from matplotlib) (23.1)\n",
"Collecting pillow>=6.2.0\n",
" Downloading http://mirrors.csdn.net.cn/repository/csdn-pypi-mirrors/packages/pillow/9.5.0/Pillow-9.5.0-cp38-cp38-manylinux_2_28_x86_64.whl (3.4 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.4/3.4 MB\u001b[0m \u001b[31m235.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting pyparsing>=2.3.1\n",
" Downloading http://mirrors.csdn.net.cn/repository/csdn-pypi-mirrors/packages/pyparsing/3.0.9/pyparsing-3.0.9-py3-none-any.whl (98 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m98.3/98.3 kB\u001b[0m \u001b[31m159.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting importlib-resources>=3.2.0\n",
" Downloading http://mirrors.csdn.net.cn/repository/csdn-pypi-mirrors/packages/importlib-resources/5.12.0/importlib_resources-5.12.0-py3-none-any.whl (36 kB)\n",
"Collecting fonttools>=4.22.0\n",
" Downloading http://mirrors.csdn.net.cn/repository/csdn-pypi-mirrors/packages/fonttools/4.39.3/fonttools-4.39.3-py3-none-any.whl (1.0 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.0/1.0 MB\u001b[0m \u001b[31m220.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting kiwisolver>=1.0.1\n",
" Downloading http://mirrors.csdn.net.cn/repository/csdn-pypi-mirrors/packages/kiwisolver/1.4.4/kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (1.2 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m288.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting cycler>=0.10\n",
" Downloading http://mirrors.csdn.net.cn/repository/csdn-pypi-mirrors/packages/cycler/0.11.0/cycler-0.11.0-py3-none-any.whl (6.4 kB)\n",
"Requirement already satisfied: zipp>=3.1.0 in /root/.local/lib/python3.8/site-packages (from importlib-resources>=3.2.0->matplotlib) (3.15.0)\n",
"Requirement already satisfied: six>=1.5 in /root/.local/lib/python3.8/site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n",
"Installing collected packages: pyparsing, pillow, kiwisolver, importlib-resources, fonttools, cycler, contourpy, matplotlib\n",
"Successfully installed contourpy-1.0.7 cycler-0.11.0 fonttools-4.39.3 importlib-resources-5.12.0 kiwisolver-1.4.4 matplotlib-3.7.1 pillow-9.5.0 pyparsing-3.0.9\n",
"\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n",
"\u001b[0m\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip available: \u001b[0m\u001b[31;49m22.2.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m23.1.2\u001b[0m\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"pip install pandas openpyxl xlrd==1.2.0 scikit-learn matplotlib"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"建立的LinearRegression模型为: \n",
" LinearRegression()\n",
"预测结果为: \n",
" [150.77019937 122.96747114 147.29485834]\n",
"Boston数据线性回归模型的平均绝对误差为: 0.6991955229101166\n",
"Boston数据线性回归模型的均方误差为: 0.7569744409051248\n",
"Boston数据线性回归模型的中值绝对误差为: 0.7701993704092445\n",
"Boston数据线性回归模型的可解释方差值为: 0.9978951362506406\n",
"Boston数据线性回归模型的R方值为: 0.9946524568538885\n"
]
}
],
"source": [
"\n",
"import pandas as pd\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.linear_model import LinearRegression\n",
"# 获取相应数据\n",
"data = pd.read_csv('../data/美国女性的平均身高和体重.csv')\n",
"X = data.iloc[:,:1]\n",
"y = data.iloc[:,2]\n",
"# 将数据划分为训练集测试集\n",
"X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2)\n",
"# 建立线性回归模型\n",
"clf = LinearRegression().fit(X_train,y_train)\n",
"print('建立的LinearRegression模型为:','\\n',clf)\n",
"\n",
"# 预测测试集结果\n",
"y_pred = clf.predict(X_test)\n",
"print('预测结果为:','\\n',y_pred[:])\n",
"\n",
"from sklearn.metrics import explained_variance_score, mean_absolute_error,\\\n",
"mean_squared_error,median_absolute_error,r2_score\n",
"print('Boston数据线性回归模型的平均绝对误差为:', mean_absolute_error(y_test,y_pred))\n",
"print('Boston数据线性回归模型的均方误差为:', mean_squared_error(y_test,y_pred))\n",
"print('Boston数据线性回归模型的中值绝对误差为:',\n",
" median_absolute_error(y_test,y_pred))\n",
"print('Boston数据线性回归模型的可解释方差值为:',\n",
" explained_variance_score(y_test,y_pred))\n",
"print('Boston数据线性回归模型的R方值为:', r2_score(y_test,y_pred))\n",
"\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# SVM,逻辑回归,knn结果是bool型"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.linear_model import LogisticRegression\n",
"# 获取数据\n",
"data = pd.read_table('../data/fertility_Diagnosis.txt',sep=',')\n",
"X = data.iloc[:,:9]\n",
"y = data.iloc[:,9]\n",
"# 数据标准化\n",
"scaler = StandardScaler()\n",
"scaler.fit(X)\n",
"X = scaler.transform(X)\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## 逻辑回归"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"建立的逻辑回归模型为:\n",
" LogisticRegression()\n",
"预测结果为:\n",
" [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
"预测对的结果数目为: 16\n",
"预测错的结果数目为: 4\n",
"预测结果准确率为: 0.8\n"
]
}
],
"source": [
"# 将数据划分为训练集测试集\n",
"cancer_data_train,cancer_data_test,cancer_target_train,cancer_target_test = train_test_split(X,y,test_size = 0.2)\n",
"## 建立逻辑回归模型\n",
"LR = LogisticRegression()\n",
"LR.fit(cancer_data_train,cancer_target_train)\n",
"print(\"建立的逻辑回归模型为:\\n\",LR)\n",
"\n",
"# 预测测试集结果\n",
"cancer_target_test_pred = LR.predict(cancer_data_test)\n",
"print('预测结果为:\\n',cancer_target_test_pred[:])\n",
"\n",
"# 求出预测和真实一样的数目\n",
"num_accu = np.sum(cancer_target_test == cancer_target_test_pred)\n",
"print('预测对的结果数目为:', num_accu)\n",
"print('预测错的结果数目为:', cancer_target_test.shape[0]-num_accu)\n",
"print('预测结果准确率为:', num_accu/cancer_target_test.shape[0])\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## knn"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"建立的knn模型为:\n",
" KNeighborsClassifier()\n",
"预测值为:\n",
" [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0]\n",
"实际值为:\n",
" [0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
"预测结果准确率为: 0.9\n",
"预测结果混淆矩阵为:\n",
" [[18 1]\n",
" [ 1 0]]\n"
]
}
],
"source": [
"from sklearn.neighbors import KNeighborsClassifier\n",
"traindata,testdata,traintarget,testtarget = train_test_split(X,y,test_size=0.2) \n",
"model_knn = KNeighborsClassifier(n_neighbors=5) # 确定算法参数\n",
"model_knn.fit(traindata,traintarget) # 拟合数据\n",
"print(\"建立的knn模型为:\\n\",model_knn)\n",
"\n",
"# 预测测试集结果\n",
"testtarget_pre = model_knn.predict(testdata)\n",
"print('预测值为:\\n',testtarget_pre[:])\n",
"print('实际值为:\\n',testtarget[:].values)\n",
"\n",
"\n",
"# 求出预测和真实一样的数目\n",
"from sklearn.metrics import accuracy_score,confusion_matrix\n",
"print(\"预测结果准确率为:\",accuracy_score(testtarget,testtarget_pre))\n",
"print(\"预测结果混淆矩阵为:\\n\",confusion_matrix(testtarget,testtarget_pre))\n",
"\n",
"\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## SVM"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"建立的支持向量机模型为:\n",
" SVC()\n",
"预测值为:\n",
" [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
"实际值为:\n",
" [0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0]\n",
"预测结果准确率为: 0.85\n",
"预测结果混淆矩阵为:\n",
" [[17 0]\n",
" [ 3 0]]\n"
]
}
],
"source": [
"import pandas as pd\n",
"from sklearn.svm import SVC\n",
"\n",
"from sklearn.model_selection import train_test_split\n",
"# 划分训练集、测试集\n",
"traindata,testdata,traintarget,testtarget = train_test_split(X,y,test_size=0.2) \n",
"model_svc = SVC() # 确定决策树参数\n",
"model_svc.fit(traindata,traintarget) # 拟合数据\n",
"print(\"建立的支持向量机模型为:\\n\",model_svc)\n",
"\n",
"# 预测测试集结果\n",
"testtarget_pre = model_svc.predict(testdata)\n",
"print('预测值为:\\n',testtarget_pre[:])\n",
"print('实际值为:\\n',testtarget[:].values)\n",
"\n",
"# 求出预测和真实一样的数目\n",
"from sklearn.metrics import accuracy_score,confusion_matrix\n",
"print(\"预测结果准确率为:\",accuracy_score(testtarget,testtarget_pre))\n",
"print(\"预测结果混淆矩阵为:\\n\",confusion_matrix(testtarget,testtarget_pre))\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# 决策树 DecisionTreeClassifier 预测bool结果"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"建立的决策树模型为:\n",
" DecisionTreeClassifier(criterion='entropy')\n",
"前10条记录的预测值为:\n",
" [1 0 0 0 1 1 1 1 1 1]\n",
"前10条记录的实际值为:\n",
" [1 0 0 0 1 1 1 1 1 1]\n",
"预测结果准确率为: 0.9385964912280702\n",
"预测结果混淆矩阵为:\n",
" [[38 5]\n",
" [ 2 69]]\n",
"建立的决策树模型为:\n",
" DecisionTreeClassifier()\n",
"前20条记录的预测值为:\n",
" [0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 1]\n",
"前20条记录的实际值为:\n",
" [0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1]\n",
"预测结果准确率为: 0.8287716955941254\n",
"预测结果混淆矩阵为:\n",
" [[1402 254]\n",
" [ 259 1081]]\n"
]
}
],
"source": [
"from sklearn.datasets import load_breast_cancer\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"# 导入load_breast_cancer数据\n",
"cancer = load_breast_cancer()\n",
"x = cancer['data']\n",
"y = cancer['target']\n",
"# 将数据划分为训练集测试集\n",
"x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=22)\n",
"# 训练决策树模型,\n",
"dt_model = DecisionTreeClassifier(criterion='entropy')\n",
"dt_model.fit(x_train, y_train)\n",
"print('建立的决策树模型为:\\n', dt_model)\n",
"\n",
"# 预测测试集结果\n",
"test_pre = dt_model.predict(x_test)\n",
"print('前10条记录的预测值为:\\n', test_pre[:10])\n",
"print('前10条记录的实际值为:\\n', y_test[:10])\n",
"\n",
"# 求出预测和真实一样的数目\n",
"from sklearn.metrics import accuracy_score,confusion_matrix\n",
"print(\"预测结果准确率为:\", accuracy_score(y_test, test_pre))\n",
"print(\"预测结果混淆矩阵为:\\n\", confusion_matrix(y_test, test_pre))\n",
"\n",
"\n",
"\n",
"# 代码4-5\n",
"\n",
"import pandas as pd\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"# 获取数据\n",
"data = pd.read_table('../data/EEG Eye State.arff.txt',sep=',')\n",
"X = data.iloc[:,:14]\n",
"y = data.iloc[:,14]\n",
"# 数据标准化\n",
"scaler = StandardScaler()\n",
"scaler.fit(X)\n",
"X = scaler.transform(X)\n",
"# 划分训练集、测试集\n",
"traindata,testdata,traintarget,testtarget = train_test_split(X,y,test_size=0.2) \n",
"model_dtc = DecisionTreeClassifier() # 确定决策树参数\n",
"model_dtc.fit(traindata,traintarget) # 拟合数据\n",
"print(\"建立的决策树模型为:\\n\",model_dtc)\n",
"\n",
"# 预测测试集结果\n",
"testtarget_pre = model_dtc.predict(testdata)\n",
"print('前20条记录的预测值为:\\n',testtarget_pre[:20])\n",
"print('前20条记录的实际值为:\\n',testtarget[:20].values)\n",
"\n",
"# 求出预测和真实一样的数目\n",
"from sklearn.metrics import accuracy_score,confusion_matrix\n",
"print(\"预测结果准确率为:\",accuracy_score(testtarget,testtarget_pre))\n",
"print(\"预测结果混淆矩阵为:\\n\",confusion_matrix(testtarget,testtarget_pre))\n",
"\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# 高斯朴素贝叶斯算法,结果是bool型"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"预测结果: [1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0]\n",
"准确率 0.7857142857142857\n"
]
}
],
"source": [
"# 代码4-7\n",
"\n",
"import pandas as pd \n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.model_selection import train_test_split \n",
"from sklearn.naive_bayes import GaussianNB # 导入高斯朴素贝叶斯算法\n",
"# 获取数据\n",
"data=pd.read_table('../data/pima-indians-diabetes.data.txt',sep=',')\n",
"X = data.iloc[:,:8]\n",
"y = data.iloc[:,8]\n",
"# 数据预处理\n",
"scaler = StandardScaler()\n",
"scaler.fit(X)\n",
"X = scaler.transform(X)\n",
"# 划分训练集和测试集(训练集:测试集 = 8:2)\n",
"x_train,x_test,y_train,y_test=train_test_split(X,y,test_size=0.2)\n",
"model = GaussianNB() # 实例化\n",
"#建立模型并进行训练\n",
"model.fit(x_train, y_train)\n",
"pre = list(model.predict(x_test)) # 利用测试集进行预测\n",
"print('预测结果:',pre)\n",
"\n",
"\n",
"\n",
"# 计算模型的准确率\n",
"from sklearn.metrics import accuracy_score\n",
"print('准确率',accuracy_score(y_test, pre))\n",
"\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# sklearn 神经网络"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python3.8/dist-packages/sklearn/neural_network/_multilayer_perceptron.py:686: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (200) reached and the optimization hasn't converged yet.\n",
" warnings.warn(\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"建立的神经网络模型为:\n",
" MLPClassifier(hidden_layer_sizes=(20, 27))\n",
"预测前20个结果为:\n",
" [1 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1]\n",
"预测前20个结果为:\n",
" [1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0]\n",
"神经网络模型预测的准确率为: 0.7727272727272727\n",
"神经网络模型预测的精确率为: 0.7446808510638298\n",
"神经网络模型预测的召回率为: 0.603448275862069\n",
"神经网络模型预测的F1值为: 0.6666666666666665\n",
"神经网络预测结果的auc值为 0.7392241379310345\n"
]
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f52ff10a760>]"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 加载所需的函数\n",
"import pandas as pd\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.neural_network import MLPClassifier\n",
"# 获取数据\n",
"data=pd.read_table('../data/pima-indians-diabetes.data.txt',sep=',')\n",
"X = data.iloc[:,:8]\n",
"y = data.iloc[:,8]\n",
"# 数据预处理\n",
"scaler = StandardScaler()\n",
"scaler.fit(X)\n",
"X = scaler.transform(X)\n",
"# 划分训练集和测试集\n",
"cancer_data_train,cancer_data_test,cancer_target_train,cancer_target_test = \\\n",
"train_test_split(X,y,test_size=0.2,random_state=123)\n",
"# 建立神经网络模型\n",
"# 双隐层网络结构,第一层隐层有20个神经元,第二层隐层有25个神经元\n",
"model_network = MLPClassifier(hidden_layer_sizes=(20,27)) \n",
"model_network.fit(cancer_data_train,cancer_target_train)\n",
"print(\"建立的神经网络模型为:\\n\",model_network)\n",
"\n",
"# 预测测试集结果\n",
"cancer_target_test_pred = model_network.predict(cancer_data_test)\n",
"print('预测前20个结果为:\\n',cancer_target_test_pred[:20])\n",
"print('预测前20个结果为:\\n',cancer_target_test[:20].values)\n",
"# 评价分类模型的指标\n",
"from sklearn.metrics import accuracy_score,precision_score,recall_score,f1_score\n",
"print(\"神经网络模型预测的准确率为:\\\n",
"\",accuracy_score(cancer_target_test,cancer_target_test_pred))\n",
"print(\"神经网络模型预测的精确率为:\\\n",
"\",precision_score(cancer_target_test,cancer_target_test_pred))\n",
"print(\"神经网络模型预测的召回率为:\\\n",
"\",recall_score(cancer_target_test,cancer_target_test_pred))\n",
"print(\"神经网络模型预测的F1值为:\\\n",
"\",f1_score(cancer_target_test,cancer_target_test_pred))\n",
"\n",
"# 绘制ROC曲线\n",
"from sklearn.metrics import roc_curve,auc\n",
"import matplotlib.pyplot as plt\n",
"# 求出ROC曲线的x轴和y轴\n",
"fpr,tpr,thresholds = roc_curve(cancer_target_test,cancer_target_test_pred)\n",
"# 求出auc值\n",
"print(\"神经网络预测结果的auc值为\",auc(fpr,tpr))\n",
"plt.figure(figsize=(10,6))\n",
"plt.title(\"ROC curve\")\n",
"plt.xlabel(\"FPR\")\n",
"plt.ylabel(\"TPR\")\n",
"plt.plot(fpr,tpr)\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# 随机森林"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"建立的随机森林模型为:\n",
" RandomForestClassifier()\n",
"前20条记录的预测值为:\n",
" [0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1]\n",
"前20条记录的实际值为:\n",
" [0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1]\n",
"预测结果准确率为: 0.9302403204272364\n",
"预测结果混淆矩阵为:\n",
" [[1579 70]\n",
" [ 139 1208]]\n"
]
}
],
"source": [
"import pandas as pd\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"# 获取数据\n",
"data=pd.read_table('../data/EEG Eye State.arff.txt',sep=',')\n",
"X = data.iloc[:,:14]\n",
"y = data.iloc[:,14]\n",
"# 数据预处理\n",
"scaler = StandardScaler()\n",
"scaler.fit(X)\n",
"X = scaler.transform(X)\n",
"# 划分训练集、测试集\n",
"traindata,testdata,traintarget,testtarget = train_test_split(X,y,test_size=0.2) \n",
"model_rf = RandomForestClassifier() # 确定随机森林参数\n",
"model_rf.fit(traindata,traintarget) # 拟合数据\n",
"print(\"建立的随机森林模型为:\\n\",model_rf)\n",
"\n",
"# 预测测试集结果\n",
"testtarget_pre = model_rf.predict(testdata)\n",
"print('前20条记录的预测值为:\\n',testtarget_pre[:20])\n",
"print('前20条记录的实际值为:\\n',testtarget[:20].values)\n",
"\n",
"# 求出预测和真实一样的数目\n",
"from sklearn.metrics import accuracy_score,confusion_matrix\n",
"print(\"预测结果准确率为:\",accuracy_score(testtarget,testtarget_pre))\n",
"print(\"预测结果混淆矩阵为:\\n\",confusion_matrix(testtarget,testtarget_pre))\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.8.10"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
因为 它太大了无法显示 source diff 。你可以改为 查看blob
进行分析的季节,分析时的年龄,是否患有幼稚病,事故或严重创伤,手术干预,去年高烧,饮酒频率,吸烟习惯,每天花费在坐的小时数,诊断结果
-0.33,0.69,0,1,1,0,0.8,0,0.88,0
-0.33,0.94,1,0,1,0,0.8,1,0.31,1
-0.33,0.5,1,0,0,0,1,-1,0.5,0
-0.33,0.75,0,1,1,0,1,-1,0.38,0
-0.33,0.67,1,1,0,0,0.8,-1,0.5,1
-0.33,0.67,1,0,1,0,0.8,0,0.5,0
-0.33,0.67,0,0,0,-1,0.8,-1,0.44,0
-0.33,1,1,1,1,0,0.6,-1,0.38,0
1,0.64,0,0,1,0,0.8,-1,0.25,0
1,0.61,1,0,0,0,1,-1,0.25,0
1,0.67,1,1,0,-1,0.8,0,0.31,0
1,0.78,1,1,1,0,0.6,0,0.13,0
1,0.75,1,1,1,0,0.8,1,0.25,0
1,0.81,1,0,0,0,1,-1,0.38,0
1,0.94,1,1,1,0,0.2,-1,0.25,0
1,0.81,1,1,0,0,1,1,0.5,0
1,0.64,1,0,1,0,1,-1,0.38,0
1,0.69,1,0,1,0,0.8,-1,0.25,1
1,0.75,1,1,1,0,1,1,0.25,0
1,0.67,1,0,0,0,0.8,1,0.38,1
1,0.67,0,0,1,0,0.8,-1,0.25,0
1,0.75,1,0,0,0,0.6,0,0.25,0
1,0.67,1,1,0,0,0.8,-1,0.25,0
1,0.69,1,0,1,-1,1,-1,0.44,1
1,0.56,1,0,1,0,1,-1,0.63,0
1,0.67,1,0,0,0,1,-1,0.25,0
1,0.67,1,0,1,0,0.6,-1,0.38,1
1,0.78,1,1,0,1,0.6,-1,0.38,1
1,0.58,0,0,1,0,1,-1,0.19,0
1,0.67,0,0,1,0,0.6,0,0.5,1
1,0.61,1,0,1,0,1,-1,0.63,0
1,0.56,1,0,0,0,1,-1,0.44,0
1,0.64,0,0,0,0,1,-1,0.63,0
1,0.58,1,1,1,0,0.8,0,0.44,0
1,0.56,1,1,1,0,1,-1,0.63,0
-1,0.78,1,1,0,1,0.6,-1,0.38,0
-1,0.78,1,0,1,0,1,-1,0.25,0
-1,0.56,1,0,1,0,1,-1,0.63,0
-1,0.67,0,0,1,0,0.6,0,0.5,1
-1,0.69,1,0,0,0,1,-1,0.31,0
-1,0.53,1,1,1,0,0.8,1,0.5,0
-1,0.56,1,1,0,0,0.8,1,0.5,0
-1,0.58,1,0,1,-1,0.8,1,0.5,0
-1,0.56,1,0,0,0,1,-1,0.44,0
-1,0.53,1,1,0,1,1,0,0.31,0
-1,0.53,1,0,0,1,1,0,0.44,0
-0.33,0.56,1,0,0,0,1,-1,0.63,0
-0.33,0.72,1,1,0,0,0.6,1,0.19,0
-0.33,0.64,1,1,1,0,0.8,-1,0.31,0
-0.33,0.75,1,1,1,0,0.6,-1,0.19,0
-0.33,0.67,1,0,1,0,0.8,-1,0.19,0
-0.33,0.53,1,1,0,1,1,-1,0.75,0
-0.33,0.53,1,1,0,0,0.8,0,0.5,0
-0.33,0.58,1,1,1,-1,0.8,0,0.19,0
-0.33,0.61,1,0,1,0,1,-1,0.63,0
-0.33,0.58,1,0,1,0,0.8,1,0.19,0
-0.33,0.53,1,1,0,0,0.8,0,0.75,0
-0.33,0.69,1,1,1,-1,1,-1,0.75,0
-0.33,0.56,1,1,0,0,0.4,1,0.63,0
1,0.58,0,0,0,1,0.8,1,0.44,0
1,0.56,0,0,0,1,0.8,0,1,0
-1,0.64,1,0,0,1,1,1,0.25,0
-1,0.61,1,1,1,0,0.6,-1,0.38,0
-1,0.56,1,0,0,1,1,-1,0.5,0
-1,0.53,1,0,0,1,0.8,-1,0.31,0
-0.33,0.56,0,0,1,0,1,-1,0.56,0
-0.33,0.5,1,1,0,-1,0.8,0,0.88,0
-0.33,0.5,1,0,0,1,1,-1,0.47,0
-0.33,0.5,1,0,0,1,0.8,0,0.31,0
-0.33,0.5,1,0,1,-1,0.8,-1,0.5,0
-0.33,0.5,1,1,0,-1,0.8,0,0.88,1
0.33,0.69,1,0,0,1,1,-1,0.31,0
1,0.56,1,0,0,1,0.6,0,0.5,0
-1,0.5,1,0,0,1,0.8,-1,0.44,0
-1,0.53,1,0,0,1,0.8,-1,0.63,0
-1,0.78,1,0,1,1,1,1,0.25,0
-1,0.75,1,0,1,1,0.6,0,0.56,0
-1,0.72,1,1,1,1,0.8,-1,0.19,0
-1,0.53,1,1,0,1,0.8,-1,0.38,0
-1,1,1,0,1,1,0.6,0,0.25,0
-0.33,0.92,1,1,0,1,1,-1,0.63,0
-1,0.81,1,1,1,1,0.8,0,0.19,0
-0.33,0.92,1,0,0,1,0.6,-1,0.19,0
-0.33,0.86,1,1,1,1,1,-1,0.25,0
-0.33,0.78,1,0,0,1,1,1,0.06,1
-0.33,0.89,1,1,0,0,0.6,1,0.31,0
-0.33,0.75,1,1,1,0,0.6,1,0.25,0
-0.33,0.75,1,1,1,1,0.8,1,0.25,0
-0.33,0.83,1,1,1,0,1,-1,0.31,0
-0.33,0.81,1,1,1,0,1,1,0.38,0
-0.33,0.81,1,1,1,1,0.8,-1,0.38,0
0.33,0.78,1,0,0,0,1,1,0.06,0
0.33,0.75,1,1,0,0,0.8,-1,0.38,0
0.33,0.75,1,0,1,0,0.8,-1,0.44,1
1,0.58,1,0,0,0,0.6,1,0.5,0
-1,0.67,1,0,0,0,1,-1,0.5,0
-1,0.61,1,0,0,0,0.8,0,0.5,0
-1,0.67,1,1,1,0,1,-1,0.31,0
-1,0.64,1,0,1,0,1,0,0.19,0
-1,0.69,0,1,1,0,0.6,-1,0.19,0
pregnant,concentration,pressure,thickness,serum_insulin,Body,function,Age,Class
6,148,72,35,0,33.6,0.627,50,1
1,85,66,29,0,26.6,0.351,31,0
8,183,64,0,0,23.3,0.672,32,1
1,89,66,23,94,28.1,0.167,21,0
0,137,40,35,168,43.1,2.288,33,1
5,116,74,0,0,25.6,0.201,30,0
3,78,50,32,88,31.0,0.248,26,1
10,115,0,0,0,35.3,0.134,29,0
2,197,70,45,543,30.5,0.158,53,1
8,125,96,0,0,0.0,0.232,54,1
4,110,92,0,0,37.6,0.191,30,0
10,168,74,0,0,38.0,0.537,34,1
10,139,80,0,0,27.1,1.441,57,0
1,189,60,23,846,30.1,0.398,59,1
5,166,72,19,175,25.8,0.587,51,1
7,100,0,0,0,30.0,0.484,32,1
0,118,84,47,230,45.8,0.551,31,1
7,107,74,0,0,29.6,0.254,31,1
1,103,30,38,83,43.3,0.183,33,0
1,115,70,30,96,34.6,0.529,32,1
3,126,88,41,235,39.3,0.704,27,0
8,99,84,0,0,35.4,0.388,50,0
7,196,90,0,0,39.8,0.451,41,1
9,119,80,35,0,29.0,0.263,29,1
11,143,94,33,146,36.6,0.254,51,1
10,125,70,26,115,31.1,0.205,41,1
7,147,76,0,0,39.4,0.257,43,1
1,97,66,15,140,23.2,0.487,22,0
13,145,82,19,110,22.2,0.245,57,0
5,117,92,0,0,34.1,0.337,38,0
5,109,75,26,0,36.0,0.546,60,0
3,158,76,36,245,31.6,0.851,28,1
3,88,58,11,54,24.8,0.267,22,0
6,92,92,0,0,19.9,0.188,28,0
10,122,78,31,0,27.6,0.512,45,0
4,103,60,33,192,24.0,0.966,33,0
11,138,76,0,0,33.2,0.420,35,0
9,102,76,37,0,32.9,0.665,46,1
2,90,68,42,0,38.2,0.503,27,1
4,111,72,47,207,37.1,1.390,56,1
3,180,64,25,70,34.0,0.271,26,0
7,133,84,0,0,40.2,0.696,37,0
7,106,92,18,0,22.7,0.235,48,0
9,171,110,24,240,45.4,0.721,54,1
7,159,64,0,0,27.4,0.294,40,0
0,180,66,39,0,42.0,1.893,25,1
1,146,56,0,0,29.7,0.564,29,0
2,71,70,27,0,28.0,0.586,22,0
7,103,66,32,0,39.1,0.344,31,1
7,105,0,0,0,0.0,0.305,24,0
1,103,80,11,82,19.4,0.491,22,0
1,101,50,15,36,24.2,0.526,26,0
5,88,66,21,23,24.4,0.342,30,0
8,176,90,34,300,33.7,0.467,58,1
7,150,66,42,342,34.7,0.718,42,0
1,73,50,10,0,23.0,0.248,21,0
7,187,68,39,304,37.7,0.254,41,1
0,100,88,60,110,46.8,0.962,31,0
0,146,82,0,0,40.5,1.781,44,0
0,105,64,41,142,41.5,0.173,22,0
2,84,0,0,0,0.0,0.304,21,0
8,133,72,0,0,32.9,0.270,39,1
5,44,62,0,0,25.0,0.587,36,0
2,141,58,34,128,25.4,0.699,24,0
7,114,66,0,0,32.8,0.258,42,1
5,99,74,27,0,29.0,0.203,32,0
0,109,88,30,0,32.5,0.855,38,1
2,109,92,0,0,42.7,0.845,54,0
1,95,66,13,38,19.6,0.334,25,0
4,146,85,27,100,28.9,0.189,27,0
2,100,66,20,90,32.9,0.867,28,1
5,139,64,35,140,28.6,0.411,26,0
13,126,90,0,0,43.4,0.583,42,1
4,129,86,20,270,35.1,0.231,23,0
1,79,75,30,0,32.0,0.396,22,0
1,0,48,20,0,24.7,0.140,22,0
7,62,78,0,0,32.6,0.391,41,0
5,95,72,33,0,37.7,0.370,27,0
0,131,0,0,0,43.2,0.270,26,1
2,112,66,22,0,25.0,0.307,24,0
3,113,44,13,0,22.4,0.140,22,0
2,74,0,0,0,0.0,0.102,22,0
7,83,78,26,71,29.3,0.767,36,0
0,101,65,28,0,24.6,0.237,22,0
5,137,108,0,0,48.8,0.227,37,1
2,110,74,29,125,32.4,0.698,27,0
13,106,72,54,0,36.6,0.178,45,0
2,100,68,25,71,38.5,0.324,26,0
15,136,70,32,110,37.1,0.153,43,1
1,107,68,19,0,26.5,0.165,24,0
1,80,55,0,0,19.1,0.258,21,0
4,123,80,15,176,32.0,0.443,34,0
7,81,78,40,48,46.7,0.261,42,0
4,134,72,0,0,23.8,0.277,60,1
2,142,82,18,64,24.7,0.761,21,0
6,144,72,27,228,33.9,0.255,40,0
2,92,62,28,0,31.6,0.130,24,0
1,71,48,18,76,20.4,0.323,22,0
6,93,50,30,64,28.7,0.356,23,0
1,122,90,51,220,49.7,0.325,31,1
1,163,72,0,0,39.0,1.222,33,1
1,151,60,0,0,26.1,0.179,22,0
0,125,96,0,0,22.5,0.262,21,0
1,81,72,18,40,26.6,0.283,24,0
2,85,65,0,0,39.6,0.930,27,0
1,126,56,29,152,28.7,0.801,21,0
1,96,122,0,0,22.4,0.207,27,0
4,144,58,28,140,29.5,0.287,37,0
3,83,58,31,18,34.3,0.336,25,0
0,95,85,25,36,37.4,0.247,24,1
3,171,72,33,135,33.3,0.199,24,1
8,155,62,26,495,34.0,0.543,46,1
1,89,76,34,37,31.2,0.192,23,0
4,76,62,0,0,34.0,0.391,25,0
7,160,54,32,175,30.5,0.588,39,1
4,146,92,0,0,31.2,0.539,61,1
5,124,74,0,0,34.0,0.220,38,1
5,78,48,0,0,33.7,0.654,25,0
4,97,60,23,0,28.2,0.443,22,0
4,99,76,15,51,23.2,0.223,21,0
0,162,76,56,100,53.2,0.759,25,1
6,111,64,39,0,34.2,0.260,24,0
2,107,74,30,100,33.6,0.404,23,0
5,132,80,0,0,26.8,0.186,69,0
0,113,76,0,0,33.3,0.278,23,1
1,88,30,42,99,55.0,0.496,26,1
3,120,70,30,135,42.9,0.452,30,0
1,118,58,36,94,33.3,0.261,23,0
1,117,88,24,145,34.5,0.403,40,1
0,105,84,0,0,27.9,0.741,62,1
4,173,70,14,168,29.7,0.361,33,1
9,122,56,0,0,33.3,1.114,33,1
3,170,64,37,225,34.5,0.356,30,1
8,84,74,31,0,38.3,0.457,39,0
2,96,68,13,49,21.1,0.647,26,0
2,125,60,20,140,33.8,0.088,31,0
0,100,70,26,50,30.8,0.597,21,0
0,93,60,25,92,28.7,0.532,22,0
0,129,80,0,0,31.2,0.703,29,0
5,105,72,29,325,36.9,0.159,28,0
3,128,78,0,0,21.1,0.268,55,0
5,106,82,30,0,39.5,0.286,38,0
2,108,52,26,63,32.5,0.318,22,0
10,108,66,0,0,32.4,0.272,42,1
4,154,62,31,284,32.8,0.237,23,0
0,102,75,23,0,0.0,0.572,21,0
9,57,80,37,0,32.8,0.096,41,0
2,106,64,35,119,30.5,1.400,34,0
5,147,78,0,0,33.7,0.218,65,0
2,90,70,17,0,27.3,0.085,22,0
1,136,74,50,204,37.4,0.399,24,0
4,114,65,0,0,21.9,0.432,37,0
9,156,86,28,155,34.3,1.189,42,1
1,153,82,42,485,40.6,0.687,23,0
8,188,78,0,0,47.9,0.137,43,1
7,152,88,44,0,50.0,0.337,36,1
2,99,52,15,94,24.6,0.637,21,0
1,109,56,21,135,25.2,0.833,23,0
2,88,74,19,53,29.0,0.229,22,0
17,163,72,41,114,40.9,0.817,47,1
4,151,90,38,0,29.7,0.294,36,0
7,102,74,40,105,37.2,0.204,45,0
0,114,80,34,285,44.2,0.167,27,0
2,100,64,23,0,29.7,0.368,21,0
0,131,88,0,0,31.6,0.743,32,1
6,104,74,18,156,29.9,0.722,41,1
3,148,66,25,0,32.5,0.256,22,0
4,120,68,0,0,29.6,0.709,34,0
4,110,66,0,0,31.9,0.471,29,0
3,111,90,12,78,28.4,0.495,29,0
6,102,82,0,0,30.8,0.180,36,1
6,134,70,23,130,35.4,0.542,29,1
2,87,0,23,0,28.9,0.773,25,0
1,79,60,42,48,43.5,0.678,23,0
2,75,64,24,55,29.7,0.370,33,0
8,179,72,42,130,32.7,0.719,36,1
6,85,78,0,0,31.2,0.382,42,0
0,129,110,46,130,67.1,0.319,26,1
5,143,78,0,0,45.0,0.190,47,0
5,130,82,0,0,39.1,0.956,37,1
6,87,80,0,0,23.2,0.084,32,0
0,119,64,18,92,34.9,0.725,23,0
1,0,74,20,23,27.7,0.299,21,0
5,73,60,0,0,26.8,0.268,27,0
4,141,74,0,0,27.6,0.244,40,0
7,194,68,28,0,35.9,0.745,41,1
8,181,68,36,495,30.1,0.615,60,1
1,128,98,41,58,32.0,1.321,33,1
8,109,76,39,114,27.9,0.640,31,1
5,139,80,35,160,31.6,0.361,25,1
3,111,62,0,0,22.6,0.142,21,0
9,123,70,44,94,33.1,0.374,40,0
7,159,66,0,0,30.4,0.383,36,1
11,135,0,0,0,52.3,0.578,40,1
8,85,55,20,0,24.4,0.136,42,0
5,158,84,41,210,39.4,0.395,29,1
1,105,58,0,0,24.3,0.187,21,0
3,107,62,13,48,22.9,0.678,23,1
4,109,64,44,99,34.8,0.905,26,1
4,148,60,27,318,30.9,0.150,29,1
0,113,80,16,0,31.0,0.874,21,0
1,138,82,0,0,40.1,0.236,28,0
0,108,68,20,0,27.3,0.787,32,0
2,99,70,16,44,20.4,0.235,27,0
6,103,72,32,190,37.7,0.324,55,0
5,111,72,28,0,23.9,0.407,27,0
8,196,76,29,280,37.5,0.605,57,1
5,162,104,0,0,37.7,0.151,52,1
1,96,64,27,87,33.2,0.289,21,0
7,184,84,33,0,35.5,0.355,41,1
2,81,60,22,0,27.7,0.290,25,0
0,147,85,54,0,42.8,0.375,24,0
7,179,95,31,0,34.2,0.164,60,0
0,140,65,26,130,42.6,0.431,24,1
9,112,82,32,175,34.2,0.260,36,1
12,151,70,40,271,41.8,0.742,38,1
5,109,62,41,129,35.8,0.514,25,1
6,125,68,30,120,30.0,0.464,32,0
5,85,74,22,0,29.0,1.224,32,1
5,112,66,0,0,37.8,0.261,41,1
0,177,60,29,478,34.6,1.072,21,1
2,158,90,0,0,31.6,0.805,66,1
7,119,0,0,0,25.2,0.209,37,0
7,142,60,33,190,28.8,0.687,61,0
1,100,66,15,56,23.6,0.666,26,0
1,87,78,27,32,34.6,0.101,22,0
0,101,76,0,0,35.7,0.198,26,0
3,162,52,38,0,37.2,0.652,24,1
4,197,70,39,744,36.7,2.329,31,0
0,117,80,31,53,45.2,0.089,24,0
4,142,86,0,0,44.0,0.645,22,1
6,134,80,37,370,46.2,0.238,46,1
1,79,80,25,37,25.4,0.583,22,0
4,122,68,0,0,35.0,0.394,29,0
3,74,68,28,45,29.7,0.293,23,0
4,171,72,0,0,43.6,0.479,26,1
7,181,84,21,192,35.9,0.586,51,1
0,179,90,27,0,44.1,0.686,23,1
9,164,84,21,0,30.8,0.831,32,1
0,104,76,0,0,18.4,0.582,27,0
1,91,64,24,0,29.2,0.192,21,0
4,91,70,32,88,33.1,0.446,22,0
3,139,54,0,0,25.6,0.402,22,1
6,119,50,22,176,27.1,1.318,33,1
2,146,76,35,194,38.2,0.329,29,0
9,184,85,15,0,30.0,1.213,49,1
10,122,68,0,0,31.2,0.258,41,0
0,165,90,33,680,52.3,0.427,23,0
9,124,70,33,402,35.4,0.282,34,0
1,111,86,19,0,30.1,0.143,23,0
9,106,52,0,0,31.2,0.380,42,0
2,129,84,0,0,28.0,0.284,27,0
2,90,80,14,55,24.4,0.249,24,0
0,86,68,32,0,35.8,0.238,25,0
12,92,62,7,258,27.6,0.926,44,1
1,113,64,35,0,33.6,0.543,21,1
3,111,56,39,0,30.1,0.557,30,0
2,114,68,22,0,28.7,0.092,25,0
1,193,50,16,375,25.9,0.655,24,0
11,155,76,28,150,33.3,1.353,51,1
3,191,68,15,130,30.9,0.299,34,0
3,141,0,0,0,30.0,0.761,27,1
4,95,70,32,0,32.1,0.612,24,0
3,142,80,15,0,32.4,0.200,63,0
4,123,62,0,0,32.0,0.226,35,1
5,96,74,18,67,33.6,0.997,43,0
0,138,0,0,0,36.3,0.933,25,1
2,128,64,42,0,40.0,1.101,24,0
0,102,52,0,0,25.1,0.078,21,0
2,146,0,0,0,27.5,0.240,28,1
10,101,86,37,0,45.6,1.136,38,1
2,108,62,32,56,25.2,0.128,21,0
3,122,78,0,0,23.0,0.254,40,0
1,71,78,50,45,33.2,0.422,21,0
13,106,70,0,0,34.2,0.251,52,0
2,100,70,52,57,40.5,0.677,25,0
7,106,60,24,0,26.5,0.296,29,1
0,104,64,23,116,27.8,0.454,23,0
5,114,74,0,0,24.9,0.744,57,0
2,108,62,10,278,25.3,0.881,22,0
0,146,70,0,0,37.9,0.334,28,1
10,129,76,28,122,35.9,0.280,39,0
7,133,88,15,155,32.4,0.262,37,0
7,161,86,0,0,30.4,0.165,47,1
2,108,80,0,0,27.0,0.259,52,1
7,136,74,26,135,26.0,0.647,51,0
5,155,84,44,545,38.7,0.619,34,0
1,119,86,39,220,45.6,0.808,29,1
4,96,56,17,49,20.8,0.340,26,0
5,108,72,43,75,36.1,0.263,33,0
0,78,88,29,40,36.9,0.434,21,0
0,107,62,30,74,36.6,0.757,25,1
2,128,78,37,182,43.3,1.224,31,1
1,128,48,45,194,40.5,0.613,24,1
0,161,50,0,0,21.9,0.254,65,0
6,151,62,31,120,35.5,0.692,28,0
2,146,70,38,360,28.0,0.337,29,1
0,126,84,29,215,30.7,0.520,24,0
14,100,78,25,184,36.6,0.412,46,1
8,112,72,0,0,23.6,0.840,58,0
0,167,0,0,0,32.3,0.839,30,1
2,144,58,33,135,31.6,0.422,25,1
5,77,82,41,42,35.8,0.156,35,0
5,115,98,0,0,52.9,0.209,28,1
3,150,76,0,0,21.0,0.207,37,0
2,120,76,37,105,39.7,0.215,29,0
10,161,68,23,132,25.5,0.326,47,1
0,137,68,14,148,24.8,0.143,21,0
0,128,68,19,180,30.5,1.391,25,1
2,124,68,28,205,32.9,0.875,30,1
6,80,66,30,0,26.2,0.313,41,0
0,106,70,37,148,39.4,0.605,22,0
2,155,74,17,96,26.6,0.433,27,1
3,113,50,10,85,29.5,0.626,25,0
7,109,80,31,0,35.9,1.127,43,1
2,112,68,22,94,34.1,0.315,26,0
3,99,80,11,64,19.3,0.284,30,0
3,182,74,0,0,30.5,0.345,29,1
3,115,66,39,140,38.1,0.150,28,0
6,194,78,0,0,23.5,0.129,59,1
4,129,60,12,231,27.5,0.527,31,0
3,112,74,30,0,31.6,0.197,25,1
0,124,70,20,0,27.4,0.254,36,1
13,152,90,33,29,26.8,0.731,43,1
2,112,75,32,0,35.7,0.148,21,0
1,157,72,21,168,25.6,0.123,24,0
1,122,64,32,156,35.1,0.692,30,1
10,179,70,0,0,35.1,0.200,37,0
2,102,86,36,120,45.5,0.127,23,1
6,105,70,32,68,30.8,0.122,37,0
8,118,72,19,0,23.1,1.476,46,0
2,87,58,16,52,32.7,0.166,25,0
1,180,0,0,0,43.3,0.282,41,1
12,106,80,0,0,23.6,0.137,44,0
1,95,60,18,58,23.9,0.260,22,0
0,165,76,43,255,47.9,0.259,26,0
0,117,0,0,0,33.8,0.932,44,0
5,115,76,0,0,31.2,0.343,44,1
9,152,78,34,171,34.2,0.893,33,1
7,178,84,0,0,39.9,0.331,41,1
1,130,70,13,105,25.9,0.472,22,0
1,95,74,21,73,25.9,0.673,36,0
1,0,68,35,0,32.0,0.389,22,0
5,122,86,0,0,34.7,0.290,33,0
8,95,72,0,0,36.8,0.485,57,0
8,126,88,36,108,38.5,0.349,49,0
1,139,46,19,83,28.7,0.654,22,0
3,116,0,0,0,23.5,0.187,23,0
3,99,62,19,74,21.8,0.279,26,0
5,0,80,32,0,41.0,0.346,37,1
4,92,80,0,0,42.2,0.237,29,0
4,137,84,0,0,31.2,0.252,30,0
3,61,82,28,0,34.4,0.243,46,0
1,90,62,12,43,27.2,0.580,24,0
3,90,78,0,0,42.7,0.559,21,0
9,165,88,0,0,30.4,0.302,49,1
1,125,50,40,167,33.3,0.962,28,1
13,129,0,30,0,39.9,0.569,44,1
12,88,74,40,54,35.3,0.378,48,0
1,196,76,36,249,36.5,0.875,29,1
5,189,64,33,325,31.2,0.583,29,1
5,158,70,0,0,29.8,0.207,63,0
5,103,108,37,0,39.2,0.305,65,0
4,146,78,0,0,38.5,0.520,67,1
4,147,74,25,293,34.9,0.385,30,0
5,99,54,28,83,34.0,0.499,30,0
6,124,72,0,0,27.6,0.368,29,1
0,101,64,17,0,21.0,0.252,21,0
3,81,86,16,66,27.5,0.306,22,0
1,133,102,28,140,32.8,0.234,45,1
3,173,82,48,465,38.4,2.137,25,1
0,118,64,23,89,0.0,1.731,21,0
0,84,64,22,66,35.8,0.545,21,0
2,105,58,40,94,34.9,0.225,25,0
2,122,52,43,158,36.2,0.816,28,0
12,140,82,43,325,39.2,0.528,58,1
0,98,82,15,84,25.2,0.299,22,0
1,87,60,37,75,37.2,0.509,22,0
4,156,75,0,0,48.3,0.238,32,1
0,93,100,39,72,43.4,1.021,35,0
1,107,72,30,82,30.8,0.821,24,0
0,105,68,22,0,20.0,0.236,22,0
1,109,60,8,182,25.4,0.947,21,0
1,90,62,18,59,25.1,1.268,25,0
1,125,70,24,110,24.3,0.221,25,0
1,119,54,13,50,22.3,0.205,24,0
5,116,74,29,0,32.3,0.660,35,1
8,105,100,36,0,43.3,0.239,45,1
5,144,82,26,285,32.0,0.452,58,1
3,100,68,23,81,31.6,0.949,28,0
1,100,66,29,196,32.0,0.444,42,0
5,166,76,0,0,45.7,0.340,27,1
1,131,64,14,415,23.7,0.389,21,0
4,116,72,12,87,22.1,0.463,37,0
4,158,78,0,0,32.9,0.803,31,1
2,127,58,24,275,27.7,1.600,25,0
3,96,56,34,115,24.7,0.944,39,0
0,131,66,40,0,34.3,0.196,22,1
3,82,70,0,0,21.1,0.389,25,0
3,193,70,31,0,34.9,0.241,25,1
4,95,64,0,0,32.0,0.161,31,1
6,137,61,0,0,24.2,0.151,55,0
5,136,84,41,88,35.0,0.286,35,1
9,72,78,25,0,31.6,0.280,38,0
5,168,64,0,0,32.9,0.135,41,1
2,123,48,32,165,42.1,0.520,26,0
4,115,72,0,0,28.9,0.376,46,1
0,101,62,0,0,21.9,0.336,25,0
8,197,74,0,0,25.9,1.191,39,1
1,172,68,49,579,42.4,0.702,28,1
6,102,90,39,0,35.7,0.674,28,0
1,112,72,30,176,34.4,0.528,25,0
1,143,84,23,310,42.4,1.076,22,0
1,143,74,22,61,26.2,0.256,21,0
0,138,60,35,167,34.6,0.534,21,1
3,173,84,33,474,35.7,0.258,22,1
1,97,68,21,0,27.2,1.095,22,0
4,144,82,32,0,38.5,0.554,37,1
1,83,68,0,0,18.2,0.624,27,0
3,129,64,29,115,26.4,0.219,28,1
1,119,88,41,170,45.3,0.507,26,0
2,94,68,18,76,26.0,0.561,21,0
0,102,64,46,78,40.6,0.496,21,0
2,115,64,22,0,30.8,0.421,21,0
8,151,78,32,210,42.9,0.516,36,1
4,184,78,39,277,37.0,0.264,31,1
0,94,0,0,0,0.0,0.256,25,0
1,181,64,30,180,34.1,0.328,38,1
0,135,94,46,145,40.6,0.284,26,0
1,95,82,25,180,35.0,0.233,43,1
2,99,0,0,0,22.2,0.108,23,0
3,89,74,16,85,30.4,0.551,38,0
1,80,74,11,60,30.0,0.527,22,0
2,139,75,0,0,25.6,0.167,29,0
1,90,68,8,0,24.5,1.138,36,0
0,141,0,0,0,42.4,0.205,29,1
12,140,85,33,0,37.4,0.244,41,0
5,147,75,0,0,29.9,0.434,28,0
1,97,70,15,0,18.2,0.147,21,0
6,107,88,0,0,36.8,0.727,31,0
0,189,104,25,0,34.3,0.435,41,1
2,83,66,23,50,32.2,0.497,22,0
4,117,64,27,120,33.2,0.230,24,0
8,108,70,0,0,30.5,0.955,33,1
4,117,62,12,0,29.7,0.380,30,1
0,180,78,63,14,59.4,2.420,25,1
1,100,72,12,70,25.3,0.658,28,0
0,95,80,45,92,36.5,0.330,26,0
0,104,64,37,64,33.6,0.510,22,1
0,120,74,18,63,30.5,0.285,26,0
1,82,64,13,95,21.2,0.415,23,0
2,134,70,0,0,28.9,0.542,23,1
0,91,68,32,210,39.9,0.381,25,0
2,119,0,0,0,19.6,0.832,72,0
2,100,54,28,105,37.8,0.498,24,0
14,175,62,30,0,33.6,0.212,38,1
1,135,54,0,0,26.7,0.687,62,0
5,86,68,28,71,30.2,0.364,24,0
10,148,84,48,237,37.6,1.001,51,1
9,134,74,33,60,25.9,0.460,81,0
9,120,72,22,56,20.8,0.733,48,0
1,71,62,0,0,21.8,0.416,26,0
8,74,70,40,49,35.3,0.705,39,0
5,88,78,30,0,27.6,0.258,37,0
10,115,98,0,0,24.0,1.022,34,0
0,124,56,13,105,21.8,0.452,21,0
0,74,52,10,36,27.8,0.269,22,0
0,97,64,36,100,36.8,0.600,25,0
8,120,0,0,0,30.0,0.183,38,1
6,154,78,41,140,46.1,0.571,27,0
1,144,82,40,0,41.3,0.607,28,0
0,137,70,38,0,33.2,0.170,22,0
0,119,66,27,0,38.8,0.259,22,0
7,136,90,0,0,29.9,0.210,50,0
4,114,64,0,0,28.9,0.126,24,0
0,137,84,27,0,27.3,0.231,59,0
2,105,80,45,191,33.7,0.711,29,1
7,114,76,17,110,23.8,0.466,31,0
8,126,74,38,75,25.9,0.162,39,0
4,132,86,31,0,28.0,0.419,63,0
3,158,70,30,328,35.5,0.344,35,1
0,123,88,37,0,35.2,0.197,29,0
4,85,58,22,49,27.8,0.306,28,0
0,84,82,31,125,38.2,0.233,23,0
0,145,0,0,0,44.2,0.630,31,1
0,135,68,42,250,42.3,0.365,24,1
1,139,62,41,480,40.7,0.536,21,0
0,173,78,32,265,46.5,1.159,58,0
4,99,72,17,0,25.6,0.294,28,0
8,194,80,0,0,26.1,0.551,67,0
2,83,65,28,66,36.8,0.629,24,0
2,89,90,30,0,33.5,0.292,42,0
4,99,68,38,0,32.8,0.145,33,0
4,125,70,18,122,28.9,1.144,45,1
3,80,0,0,0,0.0,0.174,22,0
6,166,74,0,0,26.6,0.304,66,0
5,110,68,0,0,26.0,0.292,30,0
2,81,72,15,76,30.1,0.547,25,0
7,195,70,33,145,25.1,0.163,55,1
6,154,74,32,193,29.3,0.839,39,0
2,117,90,19,71,25.2,0.313,21,0
3,84,72,32,0,37.2,0.267,28,0
6,0,68,41,0,39.0,0.727,41,1
7,94,64,25,79,33.3,0.738,41,0
3,96,78,39,0,37.3,0.238,40,0
10,75,82,0,0,33.3,0.263,38,0
0,180,90,26,90,36.5,0.314,35,1
1,130,60,23,170,28.6,0.692,21,0
2,84,50,23,76,30.4,0.968,21,0
8,120,78,0,0,25.0,0.409,64,0
12,84,72,31,0,29.7,0.297,46,1
0,139,62,17,210,22.1,0.207,21,0
9,91,68,0,0,24.2,0.200,58,0
2,91,62,0,0,27.3,0.525,22,0
3,99,54,19,86,25.6,0.154,24,0
3,163,70,18,105,31.6,0.268,28,1
9,145,88,34,165,30.3,0.771,53,1
7,125,86,0,0,37.6,0.304,51,0
13,76,60,0,0,32.8,0.180,41,0
6,129,90,7,326,19.6,0.582,60,0
2,68,70,32,66,25.0,0.187,25,0
3,124,80,33,130,33.2,0.305,26,0
6,114,0,0,0,0.0,0.189,26,0
9,130,70,0,0,34.2,0.652,45,1
3,125,58,0,0,31.6,0.151,24,0
3,87,60,18,0,21.8,0.444,21,0
1,97,64,19,82,18.2,0.299,21,0
3,116,74,15,105,26.3,0.107,24,0
0,117,66,31,188,30.8,0.493,22,0
0,111,65,0,0,24.6,0.660,31,0
2,122,60,18,106,29.8,0.717,22,0
0,107,76,0,0,45.3,0.686,24,0
1,86,66,52,65,41.3,0.917,29,0
6,91,0,0,0,29.8,0.501,31,0
1,77,56,30,56,33.3,1.251,24,0
4,132,0,0,0,32.9,0.302,23,1
0,105,90,0,0,29.6,0.197,46,0
0,57,60,0,0,21.7,0.735,67,0
0,127,80,37,210,36.3,0.804,23,0
3,129,92,49,155,36.4,0.968,32,1
8,100,74,40,215,39.4,0.661,43,1
3,128,72,25,190,32.4,0.549,27,1
10,90,85,32,0,34.9,0.825,56,1
4,84,90,23,56,39.5,0.159,25,0
1,88,78,29,76,32.0,0.365,29,0
8,186,90,35,225,34.5,0.423,37,1
5,187,76,27,207,43.6,1.034,53,1
4,131,68,21,166,33.1,0.160,28,0
1,164,82,43,67,32.8,0.341,50,0
4,189,110,31,0,28.5,0.680,37,0
1,116,70,28,0,27.4,0.204,21,0
3,84,68,30,106,31.9,0.591,25,0
6,114,88,0,0,27.8,0.247,66,0
1,88,62,24,44,29.9,0.422,23,0
1,84,64,23,115,36.9,0.471,28,0
7,124,70,33,215,25.5,0.161,37,0
1,97,70,40,0,38.1,0.218,30,0
8,110,76,0,0,27.8,0.237,58,0
11,103,68,40,0,46.2,0.126,42,0
11,85,74,0,0,30.1,0.300,35,0
6,125,76,0,0,33.8,0.121,54,1
0,198,66,32,274,41.3,0.502,28,1
1,87,68,34,77,37.6,0.401,24,0
6,99,60,19,54,26.9,0.497,32,0
0,91,80,0,0,32.4,0.601,27,0
2,95,54,14,88,26.1,0.748,22,0
1,99,72,30,18,38.6,0.412,21,0
6,92,62,32,126,32.0,0.085,46,0
4,154,72,29,126,31.3,0.338,37,0
0,121,66,30,165,34.3,0.203,33,1
3,78,70,0,0,32.5,0.270,39,0
2,130,96,0,0,22.6,0.268,21,0
3,111,58,31,44,29.5,0.430,22,0
2,98,60,17,120,34.7,0.198,22,0
1,143,86,30,330,30.1,0.892,23,0
1,119,44,47,63,35.5,0.280,25,0
6,108,44,20,130,24.0,0.813,35,0
2,118,80,0,0,42.9,0.693,21,1
10,133,68,0,0,27.0,0.245,36,0
2,197,70,99,0,34.7,0.575,62,1
0,151,90,46,0,42.1,0.371,21,1
6,109,60,27,0,25.0,0.206,27,0
12,121,78,17,0,26.5,0.259,62,0
8,100,76,0,0,38.7,0.190,42,0
8,124,76,24,600,28.7,0.687,52,1
1,93,56,11,0,22.5,0.417,22,0
8,143,66,0,0,34.9,0.129,41,1
6,103,66,0,0,24.3,0.249,29,0
3,176,86,27,156,33.3,1.154,52,1
0,73,0,0,0,21.1,0.342,25,0
11,111,84,40,0,46.8,0.925,45,1
2,112,78,50,140,39.4,0.175,24,0
3,132,80,0,0,34.4,0.402,44,1
2,82,52,22,115,28.5,1.699,25,0
6,123,72,45,230,33.6,0.733,34,0
0,188,82,14,185,32.0,0.682,22,1
0,67,76,0,0,45.3,0.194,46,0
1,89,24,19,25,27.8,0.559,21,0
1,173,74,0,0,36.8,0.088,38,1
1,109,38,18,120,23.1,0.407,26,0
1,108,88,19,0,27.1,0.400,24,0
6,96,0,0,0,23.7,0.190,28,0
1,124,74,36,0,27.8,0.100,30,0
7,150,78,29,126,35.2,0.692,54,1
4,183,0,0,0,28.4,0.212,36,1
1,124,60,32,0,35.8,0.514,21,0
1,181,78,42,293,40.0,1.258,22,1
1,92,62,25,41,19.5,0.482,25,0
0,152,82,39,272,41.5,0.270,27,0
1,111,62,13,182,24.0,0.138,23,0
3,106,54,21,158,30.9,0.292,24,0
3,174,58,22,194,32.9,0.593,36,1
7,168,88,42,321,38.2,0.787,40,1
6,105,80,28,0,32.5,0.878,26,0
11,138,74,26,144,36.1,0.557,50,1
3,106,72,0,0,25.8,0.207,27,0
6,117,96,0,0,28.7,0.157,30,0
2,68,62,13,15,20.1,0.257,23,0
9,112,82,24,0,28.2,1.282,50,1
0,119,0,0,0,32.4,0.141,24,1
2,112,86,42,160,38.4,0.246,28,0
2,92,76,20,0,24.2,1.698,28,0
6,183,94,0,0,40.8,1.461,45,0
0,94,70,27,115,43.5,0.347,21,0
2,108,64,0,0,30.8,0.158,21,0
4,90,88,47,54,37.7,0.362,29,0
0,125,68,0,0,24.7,0.206,21,0
0,132,78,0,0,32.4,0.393,21,0
5,128,80,0,0,34.6,0.144,45,0
4,94,65,22,0,24.7,0.148,21,0
7,114,64,0,0,27.4,0.732,34,1
0,102,78,40,90,34.5,0.238,24,0
2,111,60,0,0,26.2,0.343,23,0
1,128,82,17,183,27.5,0.115,22,0
10,92,62,0,0,25.9,0.167,31,0
13,104,72,0,0,31.2,0.465,38,1
5,104,74,0,0,28.8,0.153,48,0
2,94,76,18,66,31.6,0.649,23,0
7,97,76,32,91,40.9,0.871,32,1
1,100,74,12,46,19.5,0.149,28,0
0,102,86,17,105,29.3,0.695,27,0
4,128,70,0,0,34.3,0.303,24,0
6,147,80,0,0,29.5,0.178,50,1
4,90,0,0,0,28.0,0.610,31,0
3,103,72,30,152,27.6,0.730,27,0
2,157,74,35,440,39.4,0.134,30,0
1,167,74,17,144,23.4,0.447,33,1
0,179,50,36,159,37.8,0.455,22,1
11,136,84,35,130,28.3,0.260,42,1
0,107,60,25,0,26.4,0.133,23,0
1,91,54,25,100,25.2,0.234,23,0
1,117,60,23,106,33.8,0.466,27,0
5,123,74,40,77,34.1,0.269,28,0
2,120,54,0,0,26.8,0.455,27,0
1,106,70,28,135,34.2,0.142,22,0
2,155,52,27,540,38.7,0.240,25,1
2,101,58,35,90,21.8,0.155,22,0
1,120,80,48,200,38.9,1.162,41,0
11,127,106,0,0,39.0,0.190,51,0
3,80,82,31,70,34.2,1.292,27,1
10,162,84,0,0,27.7,0.182,54,0
1,199,76,43,0,42.9,1.394,22,1
8,167,106,46,231,37.6,0.165,43,1
9,145,80,46,130,37.9,0.637,40,1
6,115,60,39,0,33.7,0.245,40,1
1,112,80,45,132,34.8,0.217,24,0
4,145,82,18,0,32.5,0.235,70,1
10,111,70,27,0,27.5,0.141,40,1
6,98,58,33,190,34.0,0.430,43,0
9,154,78,30,100,30.9,0.164,45,0
6,165,68,26,168,33.6,0.631,49,0
1,99,58,10,0,25.4,0.551,21,0
10,68,106,23,49,35.5,0.285,47,0
3,123,100,35,240,57.3,0.880,22,0
8,91,82,0,0,35.6,0.587,68,0
6,195,70,0,0,30.9,0.328,31,1
9,156,86,0,0,24.8,0.230,53,1
0,93,60,0,0,35.3,0.263,25,0
3,121,52,0,0,36.0,0.127,25,1
2,101,58,17,265,24.2,0.614,23,0
2,56,56,28,45,24.2,0.332,22,0
0,162,76,36,0,49.6,0.364,26,1
0,95,64,39,105,44.6,0.366,22,0
4,125,80,0,0,32.3,0.536,27,1
5,136,82,0,0,0.0,0.640,69,0
2,129,74,26,205,33.2,0.591,25,0
3,130,64,0,0,23.1,0.314,22,0
1,107,50,19,0,28.3,0.181,29,0
1,140,74,26,180,24.1,0.828,23,0
1,144,82,46,180,46.1,0.335,46,1
8,107,80,0,0,24.6,0.856,34,0
13,158,114,0,0,42.3,0.257,44,1
2,121,70,32,95,39.1,0.886,23,0
7,129,68,49,125,38.5,0.439,43,1
2,90,60,0,0,23.5,0.191,25,0
7,142,90,24,480,30.4,0.128,43,1
3,169,74,19,125,29.9,0.268,31,1
0,99,0,0,0,25.0,0.253,22,0
4,127,88,11,155,34.5,0.598,28,0
4,118,70,0,0,44.5,0.904,26,0
2,122,76,27,200,35.9,0.483,26,0
6,125,78,31,0,27.6,0.565,49,1
1,168,88,29,0,35.0,0.905,52,1
2,129,0,0,0,38.5,0.304,41,0
4,110,76,20,100,28.4,0.118,27,0
6,80,80,36,0,39.8,0.177,28,0
10,115,0,0,0,0.0,0.261,30,1
2,127,46,21,335,34.4,0.176,22,0
9,164,78,0,0,32.8,0.148,45,1
2,93,64,32,160,38.0,0.674,23,1
3,158,64,13,387,31.2,0.295,24,0
5,126,78,27,22,29.6,0.439,40,0
10,129,62,36,0,41.2,0.441,38,1
0,134,58,20,291,26.4,0.352,21,0
3,102,74,0,0,29.5,0.121,32,0
7,187,50,33,392,33.9,0.826,34,1
3,173,78,39,185,33.8,0.970,31,1
10,94,72,18,0,23.1,0.595,56,0
1,108,60,46,178,35.5,0.415,24,0
5,97,76,27,0,35.6,0.378,52,1
4,83,86,19,0,29.3,0.317,34,0
1,114,66,36,200,38.1,0.289,21,0
1,149,68,29,127,29.3,0.349,42,1
5,117,86,30,105,39.1,0.251,42,0
1,111,94,0,0,32.8,0.265,45,0
4,112,78,40,0,39.4,0.236,38,0
1,116,78,29,180,36.1,0.496,25,0
0,141,84,26,0,32.4,0.433,22,0
2,175,88,0,0,22.9,0.326,22,0
2,92,52,0,0,30.1,0.141,22,0
3,130,78,23,79,28.4,0.323,34,1
8,120,86,0,0,28.4,0.259,22,1
2,174,88,37,120,44.5,0.646,24,1
2,106,56,27,165,29.0,0.426,22,0
2,105,75,0,0,23.3,0.560,53,0
4,95,60,32,0,35.4,0.284,28,0
0,126,86,27,120,27.4,0.515,21,0
8,65,72,23,0,32.0,0.600,42,0
2,99,60,17,160,36.6,0.453,21,0
1,102,74,0,0,39.5,0.293,42,1
11,120,80,37,150,42.3,0.785,48,1
3,102,44,20,94,30.8,0.400,26,0
1,109,58,18,116,28.5,0.219,22,0
9,140,94,0,0,32.7,0.734,45,1
13,153,88,37,140,40.6,1.174,39,0
12,100,84,33,105,30.0,0.488,46,0
1,147,94,41,0,49.3,0.358,27,1
1,81,74,41,57,46.3,1.096,32,0
3,187,70,22,200,36.4,0.408,36,1
6,162,62,0,0,24.3,0.178,50,1
4,136,70,0,0,31.2,1.182,22,1
1,121,78,39,74,39.0,0.261,28,0
3,108,62,24,0,26.0,0.223,25,0
0,181,88,44,510,43.3,0.222,26,1
8,154,78,32,0,32.4,0.443,45,1
1,128,88,39,110,36.5,1.057,37,1
7,137,90,41,0,32.0,0.391,39,0
0,123,72,0,0,36.3,0.258,52,1
1,106,76,0,0,37.5,0.197,26,0
6,190,92,0,0,35.5,0.278,66,1
2,88,58,26,16,28.4,0.766,22,0
9,170,74,31,0,44.0,0.403,43,1
9,89,62,0,0,22.5,0.142,33,0
10,101,76,48,180,32.9,0.171,63,0
2,122,70,27,0,36.8,0.340,27,0
5,121,72,23,112,26.2,0.245,30,0
1,126,60,0,0,30.1,0.349,47,1
1,93,70,31,0,30.4,0.315,23,0
"","height","weight"
"1",58,115
"2",59,117
"3",60,120
"4",61,123
"5",62,126
"6",63,129
"7",64,132
"8",65,135
"9",66,139
"10",67,142
"11",68,146
"12",69,150
"13",70,154
"14",71,159
"15",72,164
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册