from Poppy import Charge
# reader.location.setCloseToWall(True)
Charge.cdtime(0)
print('Heroic Head Comes!!')
Charge.E
本文所述所有内容均为俺们个个儿修仙做梦胡白话的瞎写文字,也是刚入门做做笔记所用,若因本文造成您日后被拒稿/无法毕业/不会科研/被老板骂/误入歧途等,本人概不负责!!
import numpy as np
import pandas as pd
np.random.seed(1)
data = pd.DataFrame({
'label': np.random.randint(0, 2, 500),
'age': np.random.randint(18, 70, 500),
'sex': np.random.randint(0, 2, 500),
'height': np.random.randint(140, 200, 500),
'weight': np.random.randint(40, 100, 500)
})
data.to_excel('demo.xlsx', index=False)
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
datafile = 'demo.xlsx'
data = pd.read_excel(datafile)
X, y = data.values[:, 1:], data.values[:, 0]
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
y_predict = model.predict(X_test)
result = accuracy_score(y_test, y_predict)
print(result)
import numpy as np
import pandas as pd
np.random.seed(1)
data = pd.DataFrame({
'label': np.random.randint(0, 2, 500),
'age': np.random.randint(18, 70, 500),
'sex': np.random.randint(0, 2, 500),
'height': np.random.randint(140, 200, 500),
'weight': np.random.randint(40, 100, 500)
})
data['label'] = data['height'].apply(lambda x : 1 if x in range(155,180) else 0) & \
data['weight'].apply(lambda x : 1 if x in range(45,70) else 0)
data.to_excel('demo.xlsx', index=False)
test = pd.DataFrame({
'age':[23],
'sex':[1],
'height':[140],
'weight':[65]
})
print(model.predict(test))
import numpy as np
import pandas as pd
from scipy.stats import chi2_contingency
data = pd.read_excel('demo.xlsx')
cross_table = pd.crosstab(data['label'], data['sex'], margins=True)
print(cross_table)
# cross_table = np.array([
# [43, 96],
# [28, 84]
# ])
result = chi2_contingency(cross_table, correction=False) # Pearson Test
# result = chi2_contingency(cross_table, correction=True) # 连续性校正
# result = fisher_exact(cross_table) # Fisher's Test
print(pd.DataFrame(result[3]))
print(f'X2= {round(result[0],3)}, p= {round(result[1],3)}')
from scipy import stats
import pandas as pd
data = pd.read_excel('demo.xlsx')
group = 'label'
feature = 'height'
print(round(data.groupby(group).mean(),2))
group_0, group_1 = data[data[group]==0], data[data[group]==1]
levene_p = round(stats.levene(group_0[feature], group_1[feature])[1], 3)
print("Levene's Test p =", levene_p)
if levene_p > 0.05:
# if p>0.05 Student's t-test
test = 'Student'
statistic, pvalue = stats.ttest_ind(group_0[feature], group_1[feature], equal_var=True)
else:
# if p<=0.05 Welch's t-test
test = 'Welch'
statistic, pvalue = stats.ttest_ind(group_0[feature], group_1[feature], equal_var=False)
print(f'test = {test}, stat = {round(statistic,4)}, p = {round(pvalue,3)}')
import pandas as pd
data = pd.read_excel('demo.xlsx')
# data = pd.read_csv('demo.csv')
读取完毕看一下你的数据是否如你想象一样正常读取,直接输入data然后执行即可。
这些数据很枯燥的,怎么也得先来个带色的图爽一爽。
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(14,10))
sns.heatmap(data.corr(), linewidths=1, square=True, cmap='coolwarm', fmt='.2f',
linecolor='white', vmax=1, vmin=-1,
annot=True, annot_kws={'size':13,'weight':'normal', 'color':'black'});
# plt.savefig('Heatmap.svg')
from sklearn.model_selection import train_test_split
seed = 42
testsize = 0.25
X, y = data.values[:, 1:], data.values[:, 0]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=testsize, random_state=seed, shuffle=True, stratify=None)
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import cross_val_score
kfold = StratifiedKFold(n_splits=5, random_state=seed)
model = DecisionTreeClassifier(random_state=seed)
cv_score = cross_val_score(model, X_train, y_train, cv=kfold, scoring="accuracy")
cv_mean = round(cv_score.mean(), 2)
cv_std = round(cv_score.std(), 2)
print(cv_score, cv_mean, cv_std)
以下内容请勿观看
- 查看学习曲线:无论原始的预测结果如何,都要首先看一下各个模型的学习曲线。通常的学习书籍都把这个放到最后模型选择的部分,但是对于需要快速完成论文的研究生来说就不合适了,边看边学到最后一看有问题了那可就慌的一P了。简单说,上面红线就是训练集得分,下面是用验证数据得分,就想象为准确率吧。横轴是病例数量,纵轴是得分。一般随着病例数增加红绿线逐渐收拢至一起,下图再增加数量也就65%左右了,再多查病例弄数据也就那样了,所以就没必要再去收集,专心研究别的模型就可以了,这对我们选择模型和确认学习数量是否合理非常必要。
- 抉择:如果上面的预测结果相对较高,或者跟你文章结论预期准确率差不多,那么就可以继续按正式稿写下去了;否则要么初始预测不高结论不是很好,要么临床要求准确率必须达到一个程度才行,那就别走机器学习的路子了,赶快换别的写作方向吧;如果你用这个比较熟练了,也可以按照下面的方法继续弄一弄,看看准确率能否再升高一些达到预期水平。
Content type
Image
Digest
Size
462.8 MB
Last updated
almost 6 years ago
docker pull dearfad/mmhelper