文章目录
- 核心思想
- 什么是正态分布?
- 正态分布的参数
- 标准正态分布:正态分布的特例
- 代码
- 也可以试试哦
核心思想
什么是正态分布?
正态分布也被称为高斯分布或者钟形曲线(因为它看起来像一个钟),这是统计学中最重要的概率分布,就像我们在大自然中经常看到的那样,它有点神奇。例如,身高、体重、血压、测量误差、智商得分等都服从正态分布。
正态分布的参数
正态分布总是以平均值为中心,而曲线的宽度则由标准差(SD)决定。、这是两个正态分布,x轴上的高度单位是英寸,y轴上是特定高度对应的人数。
婴儿的平均身高为20英寸,标准差为0.6英寸 成年人的身高为70英寸,标准差为4英寸
了解正态分布标准差的意义在于,它遵循一个经验法则,即大约95%的测量值落在均值附近的+/-2倍个标准差之间。
推论:95%的人口落在平均值+/-2*SD之间
所有正态分布的共同特征
- 它们都是对称的
- 平均数 = 中位数
- 根据经验法则,我们可以确定正态分布曲线离均值标准差范围内的数据百分比。
标准正态分布:正态分布的特例
如前所述,正态分布根据参数值(平均值和标准差)有许多不同的形状。标准正态分布是正态分布的一个特例,均值为0,标准差为1。这个分布也称为Z分布。
标准正态分布上的值称为标准分数或Z分数。标准分数表示某一特定观测值高于或低于平均数的SD值。
代码
def circulating(df):
cond = df.abs() - df.mean() > 3*df.std()
cond.sum() # 小于3σ标准的总和
# 让小于3σ标准的那些作为条件 即布尔索引
# 借助any()函数, 测试是否有True,有一个或以上返回True,反之返回False
cond = cond.any(axis = 1)
df2 = df.drop(labels=df[cond].index)
return df2
也可以试试哦
data=pd.read_csv('Titanic.train.csv')
data=data.drop(['PassengerId','Name','Ticket','Cabin'],axis=1)
imputer=SimpleImputer(strategy='mean')
data['Age']=imputer.fit_transform(data[['Age']])
for col in data.columns:
if data[col].dtype=='object':
data[col]=data[col].astype('category')
x=data.drop(['Survived'],axis=1)
y=data['Survived']
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0)
params={'max_depth':[2,3,4],
'learning_rate':[0.05,0.1,0.15,0.2,1],
'n_estimators':[30,50,80,100]}
estimator=LGBMClassifier(objective='binary',reg_alpha=0.1,
reg_lambda=0.2)
gbm=GridSearchCV(estimator,params)
gbm.fit(x_train,y_train,early_stopping_rounds=10,
categorical_feature=['Sex','Embarked'],
eval_metric=['auc','binary'],
eval_set=[(x_train,y_train)],
eval_names='train',
verbose=10)
model=gbm.best_estimator_
y_pred=model.predict(x_test)
roc_auc=roc_auc_score(y_test,model.predict_proba(x_test)[:,1])
accuracy=accuracy_score(y_test,y_pred)