主頁 > 後端開發 > 黑馬程式員---三天快速入門Python機器學習(第三天)

黑馬程式員---三天快速入門Python機器學習(第三天)

2021-04-24 13:06:40 後端開發

文章目錄

  • 四、回歸與聚類演算法
    • 4.1 線性回歸
      • 4.1.1 線性回歸的原理
      • 4.1.2 線性回歸的損失和優化原理
      • 4.1.3 線性回歸API
      • 4.1.4 波士頓房價預測
      • 4.1.5 梯度下降的擴展:GD、SGD、SAG
      • 4.1.6 總結
    • 4.2 欠擬合與過擬合
      • 4.2.1 什么是過擬合與欠擬合
      • 4.2.2 原因以及解決方法
    • 4.3 線性回歸的改進---嶺回歸
      • 4.3.1 帶有L2正則化的線性回歸--嶺回歸
    • 4.4 分類演算法--邏輯回歸與二分類
      • 4.4.1 邏輯回歸的應用場景
      • 4.4.2 邏輯回歸的原理
      • 4.4.3 邏輯回歸API
      • 4.4.4 案例:癌癥分類預測-良/惡性乳腺癌腫瘤預測
      • 4.4.5 分類的評估方法
    • 4.5 模型保存和加載
      • 4.5.1 模型的保存和加載API
      • 4.5.2 線性回歸的模型保存加載案例
    • 4.6 無監督學習:K-means演算法
      • 什么是無監督學習
      • 4.6.2 無監督學習包含演算法
      • 4.6.3 K-means原理
      • 4.6.4 K-means API
      • 4.6.5 案例:k-means對instacart Market用戶聚類
      • 4.6.6 K-means性能評估指標
      • 4.6.7 K-means總結

四、回歸與聚類演算法

4.1 線性回歸

學習目標:

  • 記憶線性回歸的原理程序
  • 應用LinearRegression或SGDRegressor實作回歸預測
  • 記憶回歸演算法的評估標準及其公式

4.1.1 線性回歸的原理

1 線性回歸應用場景
在這里插入圖片描述
2 什么是線性回歸
不同權重加權
在這里插入圖片描述
2)線性回歸的特征與目標的關系分析
廣義線性模型
在這里插入圖片描述

4.1.2 線性回歸的損失和優化原理

1 損失函式:最小二乘法
在這里插入圖片描述
2 優化演算法

  1. 正規方程:直接求解W
  2. 梯度下降:試錯,改進

正規方程:直接求解W
在這里插入圖片描述
梯度下降(Gradient Descent)
在這里插入圖片描述

4.1.3 線性回歸API

1)線性回歸:

sklearn.linear_model.LinearRegression(fit_intercept=True)
  • fit_intercept:是否計算偏置
  • LinearRegression.coef_:回歸系數
  • LinearRegression.intercept_:偏置

2)梯度下降:

sklearn.linear_model.SGDRegressor(loss="squared_loss", fit_intercept=True, learning_rate='invscaling', eta0=0.01
  • SGDRegressor類實作了隨機梯度下降學習,它支持不同的loss函式和正則化懲罰項來擬合線性回歸模型
  • loss:損失型別
    • loss=“squared_loss”:普通最小二乘法
  • fit_intercept:是否計算偏置
  • learning_rate:string,optional
    • 學習率填充
    • ‘constant’:eta=eta0
    • ‘optimal’:eta=1.0 / (alpha*(t+t0)) [default]
    • ‘invscaling’:eta=eta0 / pow(t, power_t)
  • SGDRegression.coef_:回歸系數
  • SGDRegression.intercept_:偏置
    在這里插入圖片描述

4.1.4 波士頓房價預測

在這里插入圖片描述
在這里插入圖片描述

流程:
1)獲取資料集
2)劃分資料集
3)特征工程:無量綱化 - 標準化
4)預估器流程:fit() -> 模型,coef_ intercept_
5)模型評估

2 回歸性能評估
均方誤差(Mean Squared Error)(MSE)評價機制
在這里插入圖片描述

sklearn.metrics.mean_squared_error(y_ture, y_pred)
  • 均方誤差回歸損失
  • y_true:真實值
  • y_pred:預測值
  • return:浮點數結果

3 代碼

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, SGDRegressor
from sklearn.metrics import mean_squared_error


def linner1():
    """
    正規方程的優化方法
    :return:
    """
    # 1)獲取資料
    boston = load_boston()

    # 2)劃分資料集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3)標準化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 4)預估器
    estimator = LinearRegression()
    estimator.fit(x_train, y_train)

    # 5)得出模型
    print("正規方程權重系數為:\n", estimator.coef_)
    print("正規方程偏置為:\n", estimator.intercept_)

    # 6)模型評估
    y_predict = estimator.predict(x_test)
    print("預測房價:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("正規方程-均分誤差為:\n", error)

    return None


def linner2():
    """
    梯度下降的優化方法
    :return:
    """
    # 1)獲取資料
    boston = load_boston()
    print("特征數量:\n", boston.data.shape)  # 幾個特征對應幾個權重系數

    # 2)劃分資料集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3)標準化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 4)預估器
    estimator = SGDRegressor(learning_rate="constant", eta0=0.001, max_iter=10000)
    estimator.fit(x_train, y_train)

    # 5)得出模型
    print("梯度下降權重系數為:\n", estimator.coef_)
    print("梯度下降偏置為:\n", estimator.intercept_)

    # 6)模型評估
    y_predict = estimator.predict(x_test)
    print("預測房價:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("梯度下降-均分誤差為:\n", error)

    return None


if __name__ == '__main__':
    linner1()
    linner2()
正規方程權重系數為:
 [-0.64817766  1.14673408 -0.05949444  0.74216553 -1.95515269  2.70902585
 -0.07737374 -3.29889391  2.50267196 -1.85679269 -1.75044624  0.87341624
 -3.91336869]
正規方程偏置為:
 22.62137203166228
預測房價:
 [28.22944896 31.5122308  21.11612841 32.6663189  20.0023467  19.07315705
 21.09772798 19.61400153 19.61907059 32.87611987 20.97911561 27.52898011
 15.54701758 19.78630176 36.88641203 18.81202132  9.35912225 18.49452615
 30.66499315 24.30184448 19.08220837 34.11391208 29.81386585 17.51775647
 34.91026707 26.54967053 34.71035391 27.4268996  19.09095832 14.92742976
 30.86877936 15.88271775 37.17548808  7.72101675 16.24074861 17.19211608
  7.42140081 20.0098852  40.58481466 28.93190595 25.25404307 17.74970308
 38.76446932  6.87996052 21.80450956 25.29110265 20.427491   20.4698034
 17.25330064 26.12442519  8.48268143 27.50871869 30.58284841 16.56039764
  9.38919181 35.54434377 32.29801978 21.81298945 17.60263689 22.0804256
 23.49262401 24.10617033 20.1346492  38.5268066  24.58319594 19.78072415
 13.93429891  6.75507808 42.03759064 21.9215625  16.91352899 22.58327744
 40.76440704 21.3998946  36.89912238 27.19273661 20.97945544 20.37925063
 25.3536439  22.18729123 31.13342301 20.39451125 23.99224334 31.54729547
 26.74581308 20.90199941 29.08225233 21.98331503 26.29101202 20.17329401
 25.49225305 24.09171045 19.90739221 16.35154974 15.25184758 18.40766132
 24.83797801 16.61703662 20.89470344 26.70854061 20.7591883  17.88403312
 24.28656105 23.37651493 21.64202047 36.81476219 15.86570054 21.42338732
 32.81366203 33.74086414 20.61688336 26.88191023 22.65739323 17.35731771
 21.67699248 21.65034728 27.66728556 25.04691687 23.73976625 14.6649641
 15.17700342  3.81620663 29.18194848 20.68544417 22.32934783 28.01568563
 28.58237108]
正規方程-均分誤差為:
 20.62751376309541
特征數量:
 (506, 13)
梯度下降權重系數為:
 [-0.49204282  0.90600442 -0.425408    0.78122193 -1.64479112  2.83475726
 -0.13698271 -3.10445426  1.64364102 -0.88718517 -1.70440114  0.86728865
 -3.89585718]
梯度下降偏置為:
 [22.64133018]
預測房價:
 [28.32988027 31.59628165 21.47291021 32.62500214 20.25743881 19.25430704
 21.38515208 19.41801029 19.65928761 32.85198424 21.37546131 27.39056689
 15.66170121 20.03328423 37.07101073 18.63258981  9.77520186 18.65105864
 30.75325523 24.22837635 19.22472715 34.09165    29.44791249 17.56977717
 34.7787419  26.45428709 34.22802121 27.29578864 19.32013582 15.73108309
 30.8244829  14.45690648 37.39673182  9.17153635 16.4192231  16.95257013
  8.02155337 19.91710981 40.38852095 29.15121021 25.24407119 18.010192
 39.44673115  6.88236339 21.66834002 25.00581309 20.93463887 20.7354025
 16.93857116 26.53856695  9.76725711 27.08260975 30.57506666 16.93015199
  9.7853468  35.48002407 31.38771996 22.92251304 17.5887466  21.81266956
 23.59614589 23.90931722 20.36883456 38.1178319  25.69501252 19.84073947
 14.34417444  6.91806577 42.47139663 21.77826021 16.84647155 22.57258974
 40.93987894 21.67674727 36.91202332 27.13881344 21.80877794 20.7595932
 25.25423255 23.79657533 31.47394835 20.13480903 23.8995206  31.35105601
 27.26683269 21.0353684  29.04765138 21.97300518 26.75012864 18.76796591
 25.07915162 23.89632104 20.11003321 18.24837709 15.66456151 18.41027271
 24.51065473 16.92998012 20.79986196 26.80312356 20.88746429 18.18470202
 24.16520581 23.24517214 20.27485512 36.41503937 16.03109086 22.43965602
 32.59510994 33.78438794 20.55420887 25.91441489 23.37496527 17.74240561
 21.45360217 21.65660718 27.41255864 25.15738326 23.64996403 14.61343906
 15.9240983   3.86335915 29.20453051 20.82989445 22.24521707 28.00451562
 28.39269673]
梯度下降-均分誤差為:
 21.42768961540712

在這里插入圖片描述

4.1.5 梯度下降的擴展:GD、SGD、SAG

在這里插入圖片描述

4.1.6 總結

線性回歸的損失函式:均方誤差
線性回歸的優化方法:正規方程、梯度下降
線性回歸的性能衡量方法:均方誤差

4.2 欠擬合與過擬合

學習目標:

  • 說明線性回歸(不帶正則化)的缺點
  • 說明過擬合與欠擬合的原因以及解決方法

問題:訓練資料訓練的很好啊,誤差也不大,為什么在測驗集上有問題呢?
過擬合

4.2.1 什么是過擬合與欠擬合

欠擬合:
在這里插入圖片描述
過擬合:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

4.2.2 原因以及解決方法

欠擬合原因以及解決方法

  • 原因:學習到資料的特征過少
  • 解決方法:增加資料的特征數量
    過擬合原因以及解決方法
  • 原因:學到的特征過多,存在一些嘈雜特征,模型過于復雜
  • 解決辦法:正則化
    在這里插入圖片描述
    1 正則化類別
  • L1正則化
  • L2正則化,更常用

L2正則化:

  • 作用:可以使得其中一些W都很小,都接近于0,削弱某個特征的影響
  • 優點:越小的引數說明模型越簡單,越簡單的模型也不容易產生過擬合現象
  • Ridge回歸
  • 加入L2正則化后的損失函式:
    損失函式+懲罰項
    在這里插入圖片描述

L1正則化:

  • 作用:可以使得其中一些W的值直接為0,洗掉這個特征的影響
  • LASSO回歸

4.3 線性回歸的改進—嶺回歸

學習目標:

  • 說明嶺回歸的原理即與線性回歸的不同之處
  • 說明正則化對于權重引數的影響
  • 說明L1和L2正則化的區別

4.3.1 帶有L2正則化的線性回歸–嶺回歸

嶺回歸,其實也是一種線性回歸,只不過在演算法建立回歸方程時候,加上正則化的限制,從而達到解決過擬合的效果

1 API

sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True, solver='auto', normalize=False)
  • alpha:正則化力度,取值范圍:0-1,1-10
  • solver:會根據資料自動選擇優化方法
    • sag:如果資料集、特征都較大,選擇該隨機梯度下降優化
  • normalize:資料是否進行標準化
    • normalize=False:可以在fit之前呼叫preprocessing.StandardScaler標準化資料
  • Ridge.coef_:回歸權重
  • Ridge.intercept_:回歸偏置
    在這里插入圖片描述
    在這里插入圖片描述
    3 波士頓房價預測
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge
from sklearn.metrics import mean_squared_error


def linner1():
    """
    正規方程的優化方法
    :return:
    """
    # 1)獲取資料
    boston = load_boston()

    # 2)劃分資料集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3)標準化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 4)預估器
    estimator = LinearRegression()
    estimator.fit(x_train, y_train)

    # 5)得出模型
    print("正規方程權重系數為:\n", estimator.coef_)
    print("正規方程偏置為:\n", estimator.intercept_)

    # 6)模型評估
    y_predict = estimator.predict(x_test)
    print("預測房價:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("正規方程-均分誤差為:\n", error)

    return None


def linner2():
    """
    梯度下降的優化方法
    :return:
    """
    # 1)獲取資料
    boston = load_boston()
    print("特征數量:\n", boston.data.shape)  # 幾個特征對應幾個權重系數

    # 2)劃分資料集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3)標準化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 4)預估器
    estimator = SGDRegressor(learning_rate="constant", eta0=0.001, max_iter=10000)
    estimator.fit(x_train, y_train)

    # 5)得出模型
    print("梯度下降權重系數為:\n", estimator.coef_)
    print("梯度下降偏置為:\n", estimator.intercept_)

    # 6)模型評估
    y_predict = estimator.predict(x_test)
    print("預測房價:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("梯度下降-均分誤差為:\n", error)

    return None


def linner3():
    """
    嶺回歸
    :return:
    """
    # 1)獲取資料
    boston = load_boston()
    print("特征數量:\n", boston.data.shape)  # 幾個特征對應幾個權重系數

    # 2)劃分資料集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3)標準化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 4)預估器
    estimator = Ridge(alpha=0.5, max_iter=10000)  # 可默認引數
    estimator.fit(x_train, y_train)

    # 5)得出模型
    print("嶺回歸-權重系數為:\n", estimator.coef_)
    print("嶺回歸-下降偏置為:\n", estimator.intercept_)

    # 6)模型評估
    y_predict = estimator.predict(x_test)
    print("預測房價:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("嶺回歸-均分誤差為:\n", error)

    return None


if __name__ == '__main__':
    linner1()
    linner2()
    linner3()

在這里插入圖片描述

4.4 分類演算法–邏輯回歸與二分類

學習目標:

  • 說明邏輯回歸的損失函式
  • 說明邏輯回歸的優化方法
  • 說明sigmoid函式
  • 知道邏輯回歸的應用場景
  • 知道精確率、召回率指標的區別
  • 知道F-score指標說明召回率的實際意義
  • 說明如何解決樣本不均衡情況下的評估
  • 了解ROC曲線的意義,說明AUC指標大小
  • 應用classificiation_report實作精確率、召回率計算
  • 應用roc_auc_score實作指標計算

4.4.1 邏輯回歸的應用場景

  • 廣告點擊率:是否會被點擊
  • 是否為垃圾郵件
  • 是否患病
  • 金融詐騙
  • 虛假賬號
    以上都是二分類(正例,反例),邏輯回歸就是解決二分類的利器

4.4.2 邏輯回歸的原理

在這里插入圖片描述
線性回歸的輸出就是邏輯回歸的輸入
在這里插入圖片描述
在這里插入圖片描述
3 損失以及優化
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
2 優化
同樣使用梯度下降優化演算法,去減少損失函式的值,這樣去更新邏輯回歸前面對應演算法的權重引數,提升原本屬于1類別的概率,降低原本是0類別的概率

4.4.3 邏輯回歸API

sklearn.linear_model.LogisticRefression(solver='liblinear', penalty='l2, C=1.0)
  • penalty:正則化種類
  • C:正則化力度
  • solver:優化求解方式(默認開源的liblinear庫實作)
    在這里插入圖片描述

4.4.4 案例:癌癥分類預測-良/惡性乳腺癌腫瘤預測

在這里插入圖片描述
流程分析:
1)獲取資料:讀取的時候加上names
2)資料處理:處理缺失值
3)資料集劃分
4)特征工程:無量綱化處理—標準化
5)邏輯回歸預估器
6)模型評估

import pandas as pd
import numpy as np

# 1、讀取資料
path = "https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data"
column_name = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape',
                   'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin',
                   'Normal Nucleoli', 'Mitoses', 'Class']

data = pd.read_csv(path, names=column_name)  #699 rows × 11 columns

# 2、缺失值處理
# 1)替換-》np.nan
data = data.replace(to_replace="?", value=np.nan)
# 2)洗掉缺失樣本
data.dropna(inplace=True)  #683 rows × 11 columns

# 3、劃分資料集
from sklearn.model_selection import train_test_split

# 篩選特征值和目標值
x = data.iloc[:, 1:-1]
y = data["Class"]

x_train, x_test, y_train, y_test = train_test_split(x, y)

# 4、標準化
from sklearn.preprocessing import StandardScaler

transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

from sklearn.linear_model import LogisticRegression

# 5、預估器流程
estimator = LogisticRegression()
estimator.fit(x_train, y_train)

# 邏輯回歸的模型引數:回歸系數和偏置
estimator.coef_   # 權重

estimator.intercept_  # 偏置

# 6、模型評估
# 方法1:直接比對真實值和預測值
y_predict = estimator.predict(x_test)
print("y_predict:\n", y_predict)
print("直接比對真實值和預測值:\n", y_test == y_predict)

# 方法2:計算準確率
score = estimator.score(x_test, y_test)
print("準確率為:\n", score)

4.4.5 分類的評估方法

1 精確率與召回率

1 混淆矩陣
真的患癌癥的,能夠被檢查出來的概率
在這里插入圖片描述
2 精確率(Precision)與召回率(Recall)
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
3 分類評估報告API

sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None)
  • y_true:真實目標值
  • y_pred:估計器預測目標值
  • labels:指定類別對應的數字
  • target_names:目標類別名稱
  • return:每個類別精確率與召回率
# 查看精確率、召回率、F1-score
from sklearn.metrics import classification_report
report = classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "惡性"])

在這里插入圖片描述

在這里插入圖片描述
衡量樣本不均衡下的評估:
2 ROC曲線與AUC指標
TPR就是召回率

在這里插入圖片描述
在這里插入圖片描述
4 AUC計算API

from sklearn.metrics import roc_auc_score
roc_auc_score(y_true, y_score)
  • y_true:每個樣本的真實類別,必須為0(反例)和1(正例)
  • y_score:預測得分,可以是正類的估計概率、置信值或者分類器方法的回傳值
# y_true:每個樣本的真實類別,必須為0(反例),1(正例)標記
# 將y_test 轉換成 0 1
y_true = np.where(y_test > 3, 1, 0)

from sklearn.metrics import roc_auc_score
roc_auc_score(y_true, y_predict)

在這里插入圖片描述
5 總結

  • AUC只能用來評價二分類
  • AUC非常適合評價樣本在不平衡中的分類器性能

4.5 模型保存和加載

學習目標:

  • 應用joblib實作模型的保存于加載

4.5.1 模型的保存和加載API

import joblib
  • 保存:joblib.dump(rf, ‘test.pkl’)
  • 加載:estimator = joblib.load(‘test.pkl’)

4.5.2 線性回歸的模型保存加載案例

1、保存模型
在這里插入圖片描述
2、加載模型
在這里插入圖片描述

4.6 無監督學習:K-means演算法

學習目標:

  • 說明K-means演算法原理
  • 說明K-means的性能評估標準輪廓系數
  • 說明K-means的優缺點

什么是無監督學習

沒有目標值(無標簽)—無監督學習
在這里插入圖片描述

4.6.2 無監督學習包含演算法

聚類:K-means
降維:PCA

4.6.3 K-means原理

在這里插入圖片描述

4.6.4 K-means API

sklearn.cluster.KMeans(n_cluster=8, init='k-means++')
  • n_clusters:開始聚類中心數量
  • init:初始化方法,默認為‘k-means++’
  • labels_:默認標記的型別,可以和真實值比較(不是值比較)
from sklearn.cluster import KMeans
estimator = KMeans(n_clusters=3)
estimator.fit(data_new)
y_predict = estimator.predict(data_new)

在這里插入圖片描述

4.6.5 案例:k-means對instacart Market用戶聚類

1 分析

  • 1)降維之后的資料
  • 2)預估器流程:k-means聚類
  • 3)聚類結果顯示
  • 4)模型評估

4.6.6 K-means性能評估指標

1 輪廓系數

在這里插入圖片描述
2 輪廓系數值分析
在這里插入圖片描述
3 結論
在這里插入圖片描述
4 輪廓系數API

sklearn.metrics.silhouette_score(X, labels)
  • 計算所有樣本的平均輪廓系數
  • X:特征值
  • labels:被聚類標記的目標值
from  sklearn.metrics import silhouette_score
silhouette_score(data_new, y_predict)

在這里插入圖片描述

4.6.7 K-means總結

特點分析:采用迭代式演算法,直觀易懂并且非常實用
缺點:容易收斂到區域最優解(多次聚類)

注意:聚類一般坐在分類之前

在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/279599.html

標籤:python

上一篇:機器學習 資料預處理之特征縮放(理論+案例)

下一篇:python呼叫stitcher類自動實作多個影像拼接融合

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more