主頁 > 軟體設計 > Python之sklearn:GridSearchCV()函式的簡介、具體案例、使用方法詳細攻略

Python之sklearn:GridSearchCV()函式的簡介、具體案例、使用方法詳細攻略

2020-10-19 05:06:41 軟體設計

Python之sklearn:GridSearchCV()函式的簡介、具體案例、使用方法詳細攻略

目錄

GridSearchCV()函式的簡介、具體案例、使用方法詳細攻略


GridSearchCV()函式的簡介、具體案例、使用方法詳細攻略

class GridSearchCV Found at: sklearn.model_selection._search

class GridSearchCV(BaseSearchCV):
"""Exhaustive search over specified parameter values for an estimator.
Important members are fit, predict.GridSearchCV implements a "fit" and a "score" method. It also implements "predict", "predict_proba", "decision_function", "transform" and "inverse_transform" if they are implemented in the estimator used. The parameters of the estimator used to apply these methods are optimized by cross-validated grid-search over a parameter grid.
Read more in the :ref:`User Guide <grid_search>`.

在以下位置找到GridSearchCV類:sklearn.model_selection._search
GridSearchCV類(BaseSearchCV):
“”“詳盡搜索指定引數的估計值
重要的成員是fit,predict.GridSearchCV實作“ fit”和“ score”方法, 如果在使用的估算器中實作了``predict'',`predict_proba'',``decision_function'',``transform''和``inverse_transform'',則還可以實作它們, 通過對引數網格進行交叉驗證的網格搜索來優化用于應用這些方法的估計器的引數
在:ref:?用戶指南<grid_search>`中了解更多資訊,

Parameters
----------
estimator : estimator object. This is assumed to implement the scikit-learn estimator interface. Either estimator needs to provide a ``score`` function, or ``scoring`` must be passed.

param_grid : dict or list of dictionaries. Dictionary with parameters names (`str`) as keys and lists of parameter settings to try as values, or a list of such dictionaries, in which case the grids spanned by each dictionary in the list are explored. This enables searching over any sequence of parameter settings.

scoring : str, callable, list/tuple or dict, default=None. A single str (see :ref:`scoring_parameter`) or a callable (see :ref:`scoring`) to evaluate the predictions on the test set.
For evaluating multiple metrics, either give a list of (unique) strings or a dict with names as keys and callables as values.
NOTE that when using custom scorers, each scorer should return a single value. Metric functions returning a list/array of values can be wrapped into multiple scorers that return one value each.
See :ref:`multimetric_grid_search` for an example.
If None, the estimator's score method is used.

n_jobs : int, default=None. Number of jobs to run in parallel. ``None`` means 1 unless in a :obj:`joblib.parallel_backend` context. ``-1`` means using all processors. See :term:`Glossary <n_jobs>` for more details.
.. versionchanged:: v0.20. `n_jobs` default changed from 1 to None

pre_dispatch : int, or str, default=n_jobs. Controls the number of jobs that get dispatched during parallel execution. Reducing this number can be useful to avoid an explosion of memory consumption when more jobs get dispatched than CPUs can process. This parameter can be:
- None, in which case all the jobs are immediately created and spawned. Use this for lightweight and fast-running jobs, to avoid delays due to on-demand spawning of the jobs
- An int, giving the exact number of total jobs that are spawned
- A str, giving an expression as a function of n_jobs, as in '2*n_jobs'

iid : bool, default=False. If True, return the average score across folds, weighted by the number of samples in each test set. In this case, the data is assumed to be identically distributed across the folds, and the loss minimized is the total loss per sample, and not the mean loss across the folds.
.. deprecated:: 0.22. Parameter ``iid`` is deprecated in 0.22 and will be removed in 0.24

cv : int, cross-validation generator or an iterable, default=None. Determines the cross-validation splitting strategy. Possible inputs for cv are:
- None, to use the default 5-fold cross validation,
- integer, to specify the number of folds in a `(Stratified)KFold`,
- :term:`CV splitter`,
- An iterable yielding (train, test) splits as arrays of indices.
For integer/None inputs, if the estimator is a classifier and ``y`` is either binary or multiclass, :class:`StratifiedKFold` is used. In all other cases, :class:`KFold` is used.
Refer :ref:`User Guide <cross_validation>` for the various cross-validation strategies that can be used here.
.. versionchanged:: 0.22. ``cv`` default value if None changed from 3-fold to 5-fold.

refit : bool, str, or callable, default=True. Refit an estimator using the best found parameters on the whole dataset. For multiple metric evaluation, this needs to be a `str` denoting the scorer that would be used to find the best parameters for refitting the estimator at the end.
Where there are considerations other than maximum score in choosing a best estimator, ``refit`` can be set to a function which returns the selected ``best_index_`` given ``cv_results_``. In that case, the ``best_estimator_`` and ``best_params_`` will be set according to the returned ``best_index_`` while the ``best_score_`` attribute will not be available.
The refitted estimator is made available at the ``best_estimator_`` attribute and permits using ``predict`` directly on this ``GridSearchCV`` instance.
Also for multiple metric evaluation, the attributes ``best_index_``, ``best_score_`` and ``best_params_`` will only be available if ``refit`` is set and all of them will be determined w.r.t this specific scorer.
See ``scoring`` parameter to know more about multiple metric evaluation. .. versionchanged:: 0.20. Support for callable added.

verbose : integer. Controls the verbosity: the higher, the more messages.

error_score : 'raise' or numeric, default=np.nan. Value to assign to the score if an error occurs in estimator fitting. If set to 'raise', the error is raised. If a numeric value is given, FitFailedWarning is raised. This parameter does not affect the refit step, which will always raise the error.

return_train_score : bool, default=False. If ``False``, the ``cv_results_`` attribute will not include training scores. Computing training scores is used to get insights on how different parameter settings impact the overfitting/underfitting trade-off. However computing the scores on the training set can be computationally expensive and is not strictly required to select the parameters that yield the best generalization performance.
.. versionadded:: 0.19
.. versionchanged:: 0.21. Default value was changed from ``True`` to ``False``

引數
----------
estimator :估計器物件,假定這樣做是為了實作scikit-learn估計器介面,估算器需要提供一個“得分”功能,或者必須傳遞“得分”,

param_grid :字典或字典串列,使用引數名稱(`str`)作為鍵的字典,以及將嘗試用作值的引數設定串列,或此類字典的串列,在這種情況下,將探索串列中每個字典所跨越的網格,這樣可以搜索任何順序的引數設定

scoring :str,可呼叫,串列/元組或字典,默認=無,單個str(請參閱scoring_parameter)或可呼叫項(請參閱scoring)來評估測驗集上的預測,
要評估多個指標,請給出(唯一的)字串串列或以名稱為鍵,將可呼叫項為值的字典,

請注意,使用自定義計分器時,每個計分器應回傳一個單個值,回傳值串列/陣列的度量函式可以包裝到多個計分器中,每個計分器都回傳一個值,
有關示例,請參見multimetric_grid_search,
如果為None,則使用估算器的計分方法

n_jobs :int,默認=無,要并行運行的作業數,除非在:obj:`joblib.parallel_backend`背景關系中,否則“ None``表示1, -1表示使用所有處理器,有關更多詳細資訊,請參見術語<n_jobs>`,

..版本已更改:: v0.20, `n_jobs`默認從1更改為None

pre_dispatch 或str,默認= n_jobs,控制在并行執行期間分派的作業數量,當調度的作業數量超過CPU的處理能力時,減少此數量可能有助于避免記憶體消耗激增,該引數可以是:

-None,在這種情況下,將立即創建并產生所有作業,使用它進行輕量級和快速運行的作業,以避免因按需生成作業而造成延遲
-一個int,給出產生的確切總作業數
-一個str,根據n_jobs給出運算式,如'2 * n_jobs'

iid :bool,默認= False,如果為True,則按倍數回傳平均得分,并按每個測驗集中的樣本數加權,在這種情況下,假設資料在折痕上分布相同,并且最小化的損失是每個樣品的總損失,而不是折痕的平均損失
..不建議使用:: 0.22,引數“ iid”在0.22中已棄用,在0.24中將被洗掉

cv :int,交叉驗證生成器或可迭代的default = None,確定交叉驗證拆分策略,簡歷的可能輸入是:
-None,要使用默認的5-fold交叉驗證
-integer整數,用于指定“(分層)KFold”中的折疊次數,
-:CV splitter`,
-可迭代的yielding (訓練,測驗)拆分為索引陣列,
對于整數/無輸入,如果估計器是分類器,而y是二進制或多類,則使用:StratifiedKFold,在所有其他情況下,都使用KFold類,
請參閱:ref:?用戶指南<cross_validation>`,了解可以在此處使用的各種交叉驗證策略,
..版本已更改:: 0.22,如果無從3倍更改為5倍,則為cv默認值,

refit :bool,str或callable,默認為True,使用在整個資料集中找到的最佳引數重新擬合估算器,對于多指標評估,這需要是一個“ str”,表示計分器,該計分器將被用于尋找最佳引數,以最終擬合估計器
在選擇最佳估算器時,除了最大分數以外,還可以將``refit''設定為一個函式,該函式在給定``cv_results_''的情況下回傳所選的``best_index_'',在這種情況下,將根據回傳的``best_index_''設定``best_estimator_''和``best_params_'',而``best_score_''屬性將不可用
可以在“ best_estimator_”屬性中使用經過重新調整的估計器,并允許在此“ GridSearchCV”實體上直接使用“預測”,
同樣對于多指標評估,屬性``best_index _'',``best_score_''和``best_params_''僅在設定了``refit''后才可用,并且將通過該特定計分器確定所有屬性,
請參閱``評分''引數以了解有關多指標評估的更多資訊, ..版本已更改:: 0.20,支持添加可呼叫,

verbose :整數,控制詳細程度:越高,訊息越多

error_score :“raise”或數字,默認值= np.nan,如果估算器擬合出現錯誤,則分配給分數的值,如果設定為“ raise”,則會引發錯誤,如果給出數值,則引發FitFailedWarning,此引數不會影響重新安裝步驟,這將始終引發錯誤,

return_train_score :布林值,默認為False, 如果為False,則cv_results_屬性將不包括訓練得分, 計算培訓分數用于了解不同的引數設定如何影響過擬合/欠擬合權衡, 但是,在訓練集上計算分數可能會在計算上昂貴,并且并非嚴格要求選擇產生最佳泛化性能的引數,
..版本添加:: 0.19
..版本已更改:: 0.21, 默認值從``True''更改為``False''

Examples
--------
>>> from sklearn import svm, datasets
>>> from sklearn.model_selection import GridSearchCV
>>> iris = datasets.load_iris()
>>> parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
>>> svc = svm.SVC()
>>> clf = GridSearchCV(svc, parameters)
>>> clf.fit(iris.data, iris.target)
GridSearchCV(estimator=SVC(),
param_grid={'C': [1, 10], 'kernel': ('linear', 'rbf')})
>>> sorted(clf.cv_results_.keys())
['mean_fit_time', 'mean_score_time', 'mean_test_score',...
'param_C', 'param_kernel', 'params',...
'rank_test_score', 'split0_test_score',...
'split2_test_score', ...
'std_fit_time', 'std_score_time', 'std_test_score']

Attributes
----------
cv_results_ : dict of numpy (masked) ndarrays.A dict with keys as column headers and values as columns, that can be imported into a pandas ``DataFrame``.

For instance the below given table
+------------+-----------+------------+-----------------+---+---------+
|param_kernel|param_gamma|param_degree|split0_test_score|...
|rank_t...|
+============+===========+============+========
=========+===+=========+
| 'poly' | -- | 2 | 0.80 |...| 2 |
+------------+-----------+------------+-----------------+---+---------+
| 'poly' | -- | 3 | 0.70 |...| 4 |
+------------+-----------+------------+-----------------+---+---------+
| 'rbf' | 0.1 | -- | 0.80 |...| 3 |
+------------+-----------+------------+-----------------+---+---------+
| 'rbf' | 0.2 | -- | 0.93 |...| 1 |
+------------+-----------+------------+-----------------+---+---------+
will be represented by a ``cv_results_`` dict of::
{
'param_kernel': masked_array(data = ['poly', 'poly', 'rbf', 'rbf'],
mask = [False False False False]...)
'param_gamma': masked_array(data = [-- -- 0.1 0.2],
mask = [ True True False False]...),
'param_degree': masked_array(data = [2.0 3.0 -- --],
mask = [False False True True]...),
'split0_test_score' : [0.80, 0.70, 0.80, 0.93],
'split1_test_score' : [0.82, 0.50, 0.70, 0.78],
'mean_test_score' : [0.81, 0.60, 0.75, 0.85],
'std_test_score' : [0.01, 0.10, 0.05, 0.08],
'rank_test_score' : [2, 4, 3, 1],
'split0_train_score' : [0.80, 0.92, 0.70, 0.93],
'split1_train_score' : [0.82, 0.55, 0.70, 0.87],
'mean_train_score' : [0.81, 0.74, 0.70, 0.90],
'std_train_score' : [0.01, 0.19, 0.00, 0.03],
'mean_fit_time' : [0.73, 0.63, 0.43, 0.49],
'std_fit_time' : [0.01, 0.02, 0.01, 0.01],
'mean_score_time' : [0.01, 0.06, 0.04, 0.04],
'std_score_time' : [0.00, 0.00, 0.00, 0.01],
'params' : [{'kernel': 'poly', 'degree': 2}, ...],
}

NOTE

The key ``'params'`` is used to store a list of parameter settings dicts for all the parameter candidates.
The ``mean_fit_time``, ``std_fit_time``, ``mean_score_time`` and ``std_score_time`` are all in seconds.
For multi-metric evaluation, the scores for all the scorers are available in the ``cv_results_`` dict at the keys ending with that scorer's name (``'_<scorer_name>'``) instead of ``'_score'`` shown above. ('split0_test_precision', 'mean_train_precision' etc.)

best_estimator_ : estimator. Estimator that was chosen by the search, i.e. estimator which gave highest score (or smallest loss if specified) on the left out data. Not available if ``refit=False``.
See ``refit`` parameter for more information on allowed values.

best_score_ : float. Mean cross-validated score of the best_estimator. For multi-metric evaluation, this is present only if ``refit`` is specified. This attribute is not available if ``refit`` is a function.

best_params_ : dict. Parameter setting that gave the best results on the hold out data. For multi-metric evaluation, this is present only if ``refit`` is specified.

best_index_ : int. The index (of the ``cv_results_`` arrays) which corresponds to the best candidate parameter setting. The dict at ``search.cv_results_['params'][search.best_index_]`` gives the parameter setting for the best model, that gives the highest mean score (``search.best_score_``).
For multi-metric evaluation, this is present only if ``refit`` is specified.

scorer_ : function or a dict. Scorer function used on the held out data to choose the best parameters for the model. For multi-metric evaluation, this attribute holds the validated ``scoring`` dict which maps the scorer key to the scorer callable.

n_splits_ : int. The number of cross-validation splits (folds/iterations).

refit_time_ : float. Seconds used for refitting the best model on the whole dataset. This is present only if ``refit`` is not False.
.. versionadded:: 0.20

Notes
-----
The parameters selected are those that maximize the score of the left out data, unless an explicit score is passed in which case it is used instead.
If `n_jobs` was set to a value higher than one, the data is copied for each point in the grid (and not `n_jobs` times). This is done for efficiency reasons if individual jobs take very little time, but may raise errors if the dataset is large and not enough memory is available. A workaround in this case is to set `pre_dispatch`. Then, the memory is copied only `pre_dispatch` many times. A reasonable value for `pre_dispatch` is `2 * n_jobs`.

See Also
---------
:class:`ParameterGrid`:
generates all the combinations of a hyperparameter grid.

:func:`sklearn.model_selection.train_test_split`:
utility function to split the data into a development set usable for fitting a GridSearchCV instance and an evaluation set for its final evaluation.

:func:`sklearn.metrics.make_scorer`:
Make a scorer from a performance metric or loss function.

"""

屬性
----------
cv_results_:numpy(masked)ndarrays的字典,字典可以將鍵作為列標題,將值作為列,可以將其匯入到pandas ``DataFrame''中

例如下面的表格

+------------+-----------+------------+-----------------+---+---------+
|param_kernel|param_gamma|param_degree|split0_test_score|...
|rank_t...|
+============+===========+============+========
=========+===+=========+
| 'poly' | -- | 2 | 0.80 |...| 2 |
+------------+-----------+------------+-----------------+---+---------+
| 'poly' | -- | 3 | 0.70 |...| 4 |
+------------+-----------+------------+-----------------+---+---------+
| 'rbf' | 0.1 | -- | 0.80 |...| 3 |
+------------+-----------+------------+-----------------+---+---------+
| 'rbf' | 0.2 | -- | 0.93 |...| 1 |
+------------+-----------+------------+-----------------+---+---------+

將由以下內容的“ cv_results_”字典表示:{

'param_kernel': masked_array(data = ['poly', 'poly', 'rbf', 'rbf'],
mask = [False False False False]...)
'param_gamma': masked_array(data = [-- -- 0.1 0.2],
mask = [ True True False False]...),
'param_degree': masked_array(data = [2.0 3.0 -- --],
mask = [False False True True]...),
'split0_test_score' : [0.80, 0.70, 0.80, 0.93],
'split1_test_score' : [0.82, 0.50, 0.70, 0.78],
'mean_test_score' : [0.81, 0.60, 0.75, 0.85],
'std_test_score' : [0.01, 0.10, 0.05, 0.08],
'rank_test_score' : [2, 4, 3, 1],
'split0_train_score' : [0.80, 0.92, 0.70, 0.93],
'split1_train_score' : [0.82, 0.55, 0.70, 0.87],
'mean_train_score' : [0.81, 0.74, 0.70, 0.90],
'std_train_score' : [0.01, 0.19, 0.00, 0.03],
'mean_fit_time' : [0.73, 0.63, 0.43, 0.49],
'std_fit_time' : [0.01, 0.02, 0.01, 0.01],
'mean_score_time' : [0.01, 0.06, 0.04, 0.04],
'std_score_time' : [0.00, 0.00, 0.00, 0.01],
'params' : [{'kernel': 'poly', 'degree': 2}, ...],
}

注意

鍵``params''用于存盤所有候選引數的引數設定字典串列

``mean_fit_time'',``std_fit_time'',``mean_score_time''和``std_score_time''都以秒為單位,

對于多指標評估,所有得分者的得分都可以在“ cv_results_” dict中以該得分者的名字(“ _ <scorer_name>””)而不是“ _score”的鍵獲得,如上所示, (“ split0_test_precision”,“ mean_train_precision”等)

best_estimator_:估算器,搜索選擇的估算器,即在剩余資料上給出最高分(或最小損失,如果指定)的估算器,如果``refit = False'',則不可用,

有關允許值的更多資訊,請參見“改裝”引數,

best_score_:浮動, best_estimator的平均交叉驗證得分,對于多指標評估,僅在指定``refit''時才存在,如果``refit''是一個函式,則此屬性不可用,

best_params_:字典,引數設定可使保留資料獲得最佳結果,對于多指標評估,僅在指定``refit''時才存在,

best_index_:整數,與“ cv_results_”陣列的索引相對應的最佳候選引數設定, search.cv_results _ ['params'] [search.best_index_]上的字典給出了最佳模型的引數設定,該模型給出了最高的平均得分(“ search.best_score_”),
對于多指標評估,僅在指定``refit''時才存在,

scorer_:函式或字典,對保留的資料使用記分器功能,以為模型選擇最佳引數,對于多指標評估,此屬性保存已驗證的“評分”字典,該評分將記分員鍵映射到可呼叫的記分員,

n_splits_:整數,交叉驗證拆分(折疊/迭代)的數量

refit_time_:浮動,用于在整個資料集中重新擬合最佳模型的秒數,僅當``refit''不為False時才存在,
..版本添加:: 0.20

注意
-----
所選擇的引數是那些使遺留資料的分數最大化的引數,除非傳遞了顯式分數,否則將使用該顯式分數,
如果將n_jobs的值設定為大于1的值,則會為網格中的每個點復制資料(而不是n_jobs次),如果出于效率考慮,這樣做是因為單個作業花費的時間很少,但是如果資料集很大且沒有足夠的可用記憶體,則可能會引發錯誤,這種情況下的解決方法是設定`pre_dispatch`,然后,該記憶體僅被復制一次pre_dispatch多次, pre_dispatch的合理值是2 * n_jobs,

也可以看看
---------
ParameterGrid
生成超引數網格的所有組合

:func:`sklearn.model_selection.train_test_split`:
實用程式功能將資料分為可用于擬合GridSearchCV實體的開發集和用于其最終評估的評估集,

:func:`sklearn.metrics.make_scorer`:
根據績效指標或損失函式確定得分手,

“”

_required_parameters = ["estimator", "param_grid"]
@_deprecate_positional_args
def __init__(self, estimator, param_grid, *, scoring=None,
n_jobs=None, iid='deprecated', refit=True, cv=None,
verbose=0, pre_dispatch='2*n_jobs',
error_score=np.nan, return_train_score=False):
super().__init__(estimator=estimator, scoring=scoring,
n_jobs=n_jobs, iid=iid, refit=refit, cv=cv, verbose=verbose,
pre_dispatch=pre_dispatch, error_score=error_score,
return_train_score=return_train_score)
self.param_grid = param_grid
_check_param_grid(param_grid)

def _run_search(self, evaluate_candidates):
"""Search all candidates in param_grid"""
evaluate_candidates(ParameterGrid(self.param_grid))

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

標籤:其他

上一篇:2020第十一屆藍橋杯JavaB組省賽總結

下一篇:如何使用Google Colab運行TensorFlow專案

標籤雲
其他(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)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more