• 机器学习之正态分布拟合


    核心思想

    什么是正态分布

    正态分布也被称为高斯分布或者钟形曲线(因为它看起来像一个钟),这是统计学中最重要的概率分布,就像我们在大自然中经常看到的那样,它有点神奇。例如,身高、体重、血压、测量误差、智商得分等都服从正态分布。

    正态分布的参数

    正态分布总是以平均值为中心,而曲线的宽度则由标准差(SD)决定。、这是两个正态分布,x轴上的高度单位是英寸,y轴上是特定高度对应的人数。

    婴儿的平均身高为20英寸,标准差为0.6英寸 成年人的身高为70英寸,标准差为4英寸

    了解正态分布标准差的意义在于,它遵循一个经验法则,即大约95%的测量值落在均值附近的+/-2倍个标准差之间。

    推论:95%的人口落在平均值+/-2*SD之间

    所有正态分布的共同特征

    1. 它们都是对称的
    2. 平均数 = 中位数
    3. 根据经验法则,我们可以确定正态分布曲线离均值标准差范围内的数据百分比。

    标准正态分布:正态分布的特例

    如前所述,正态分布根据参数值(平均值和标准差)有许多不同的形状。标准正态分布是正态分布的一个特例,均值为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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    也可以试试哦

    
    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)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    计算机系统(17)----- 进程同步和进程互斥
    深度学习(一)—— Transformer
    C++基类和派生类的内存分配,多态的实现
    [基因遗传算法]原理思想和python代码的结合理解之(一) :单变量
    ubuntu 手动清理内存cache
    高德地图用法
    ES6 Proxy
    【C++】多态
    【机器学习】树模型的三种序列化方式的区别(模型存储大小、序列化所用内存、序列化速度)
    Abnova ABCB10(人)重组蛋白说明书
  • 原文地址:https://blog.csdn.net/m0_58381606/article/details/126680358