小编Avi*_*ade的帖子

在Scikit Learn中运行SelectKBest后获取功能名称的最简单方法

我想进行有监督的学习.

到现在为止,我知道要对所有功能进行监督学习.

但是,我还想进行K最佳功能的实验.

我阅读了文档,发现在Scikit中学习了SelectKBest方法.

不幸的是,我不确定在找到这些最佳功能后如何创建新的数据帧:

我们假设我想进行5个最佳功能的实验:

from sklearn.feature_selection import SelectKBest, f_classif
select_k_best_classifier = SelectKBest(score_func=f_classif, k=5).fit_transform(features_dataframe, targeted_class)
Run Code Online (Sandbox Code Playgroud)

现在,如果我要添加下一行:

dataframe = pd.DataFrame(select_k_best_classifier)
Run Code Online (Sandbox Code Playgroud)

我将收到一个没有功能名称的新数据帧(只有索引从0到4开始).

我应该把它替换为:

dataframe = pd.DataFrame(fit_transofrmed_features, columns=features_names)
Run Code Online (Sandbox Code Playgroud)

我的问题是如何创建features_names列表?

我知道我应该使用:select_k_best_classifier.get_support()

返回布尔值数组.

数组中的真值表示右列中的索引.

我应该如何使用这个布尔数组与我可以通过该方法获得的所有功能名称的数组:

feature_names = list(features_dataframe.columns.values)
Run Code Online (Sandbox Code Playgroud)

python feature-selection pandas scikit-learn

38
推荐指数
4
解决办法
3万
查看次数

为多类计算sklearn.roc_auc_score

我想计算分类器的AUC,精度和准确度.我正在监督学习:

这是我的工作代码.此代码适用于二进制类,但不适用于多类.请假设您有一个包含二进制类的数据框:

sample_features_dataframe = self._get_sample_features_dataframe()
labeled_sample_features_dataframe = retrieve_labeled_sample_dataframe(sample_features_dataframe)
labeled_sample_features_dataframe, binary_class_series, multi_class_series = self._prepare_dataframe_for_learning(labeled_sample_features_dataframe)

k = 10
k_folds = StratifiedKFold(binary_class_series, k)
for train_indexes, test_indexes in k_folds:
    train_set_dataframe = labeled_sample_features_dataframe.loc[train_indexes.tolist()]
    test_set_dataframe = labeled_sample_features_dataframe.loc[test_indexes.tolist()]

    train_class = binary_class_series[train_indexes]
    test_class = binary_class_series[test_indexes]
    selected_classifier = RandomForestClassifier(n_estimators=100)
    selected_classifier.fit(train_set_dataframe, train_class)
    predictions = selected_classifier.predict(test_set_dataframe)
    predictions_proba = selected_classifier.predict_proba(test_set_dataframe)

    roc += roc_auc_score(test_class, predictions_proba[:,1])
    accuracy += accuracy_score(test_class, predictions)
    recall += recall_score(test_class, predictions)
    precision += precision_score(test_class, predictions)
Run Code Online (Sandbox Code Playgroud)

最后我将结果分成K当然是为了获得平均AUC,精度等.这段代码工作正常.但是,我不能为多类计算相同:

    train_class = multi_class_series[train_indexes]
    test_class = multi_class_series[test_indexes]

    selected_classifier = RandomForestClassifier(n_estimators=100)
    selected_classifier.fit(train_set_dataframe, train_class)

    predictions = selected_classifier.predict(test_set_dataframe)
    predictions_proba …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn supervised-learning

14
推荐指数
4
解决办法
2万
查看次数

在模态角度js中返回多个结果

我有一个angularjs应用程序.我在我的应用程序中添加了一个按钮,当用户点击它时,会弹出一个弹出屏幕.用户应该从2个下拉列表中进行选择,这样我就有两个值需要发送回打开模态屏幕的服务.

打开弹出屏幕的服务

app.service('OriginalService', [ '$modal',
function ($modal) {

this.openDialog = function(){
        var modalInstance = $modal.open({
            templateUrl: 'ModalScreen.html',
            controller: 'ModalController'
        });

        modalInstance.result.then(function (oneFilter, secondFilter) {
            this.filtersMananger.oneFilter= oneFilter;
            this.filtersMananger.secondFilter= secondFilter;
        }, function () {

        });
    };
}]);
Run Code Online (Sandbox Code Playgroud)

在ModalController中,当我单击OK时,我发送了两个值:

app.controller('ModalController', ['$scope', '$modalInstance',
                                     function ($scope, $modalInstance) {

$scope.ok = function () {
        $modalInstance.close($scope.filterMananger.oneFilter, 
                             $scope.filterMananger.secondFilter);
    };
}]);
Run Code Online (Sandbox Code Playgroud)

问题是只有第一个值返回服务.我在其他例子中看到过,他们可能只想出一个结果:

modalInstance.result.then(function (result)
Run Code Online (Sandbox Code Playgroud)

我可以发送两个或值作为结果,还是只能在这种情况下发送带有这两个值的对象?

javascript modal-dialog angularjs

9
推荐指数
1
解决办法
7801
查看次数

Angular js:在弹出窗口中显示iframe并查看空框架

我正在构建一个angularJs应用程序.

当我点击一张照片时,我希望一个模态屏幕会显示在播放YouTube剪辑的播放器上.

当我输入硬编码的一切运行正常.但是当我从服务器上获取它时,iframe是空的.

在控制器中

$scope.openVideoPlayerPopup = function (videoUrl) {
        var modalInstance = $modal.open({
            templateUrl: 'common/partials/videoPlayerModalScreen.html',
            controller: 'VideoPlayerModalCtrl',
            resolve: {
                url: function () {
                  return videoUrl;
                }
            }
        });

        modalInstance.result.then(function () {

        }, function () {
            console.log('Modal dismissed at: ' + new Date());
        });
    }; 
Run Code Online (Sandbox Code Playgroud)

VideoPlayerModalController:

elbitApp.controller('VideoPlayerModalCtrl', ['$scope', '$modalInstance', 'url',
                                     function ($scope, $modalInstance,url) {

    $scope.givenUrl =  url;                        

    $scope.ok = function () {
        $modalInstance.close();
    };

    $scope.cancel = function () {
        $modalInstance.dismiss('cancel');
    };
}]);
Run Code Online (Sandbox Code Playgroud)

videoPlayerModalScreen.html:

<div class="modal-header">
    <h3 class="modal-title">Video Player</h3>
</div>
<div class="modal-body-video"> …
Run Code Online (Sandbox Code Playgroud)

javascript iframe angularjs

8
推荐指数
1
解决办法
1万
查看次数

在for循环中发送post请求

我想循环发送帖子请求.如果我连续发送2个请求,那么只有最后一个请求真正进行了回调.

我做错了什么?

this.assignAUnits = function(){
        var currentIncidentId = this.incident.incidentId;
        for (var i=0; i< this.selectedAvailableUnits.length; i++){
            var unit = this.selectedAvailableUnits[i];
            var unitId = unit.unitId;

            var url = '/incident/' + currentIncidentId + '/assignUnit/' + unitId

            $http.post(url).then(function(response) {
               DOING SOMETHING

            }, function(error) {
                alert(error);
            });          
        }
    };
Run Code Online (Sandbox Code Playgroud)

javascript for-loop http-post angularjs

6
推荐指数
1
解决办法
7349
查看次数

角度js中的识别对象已更改

我有一个后端对象,我从服务器收到并发送到服务器.我向用户授予更改后端对象的权限.我想确定后端对象是否已从保存点更改.

我怎么识别它?

例如:我有一个名为的模块

app.controller('PanelCtrl', function($scope, $http) {
$scope.action = "";
$scope.selectedItem = "";
    $scope.compoundItem = [];

...
Run Code Online (Sandbox Code Playgroud)

我有对象的复合项数组.我想知道是否有变化是否在基元中发生了变化以及是否在复合项中...

javascript jquery onchange angularjs

4
推荐指数
1
解决办法
6846
查看次数

Scikit 学习系列拆分训练测试

我有一个数据,其中包含按排序顺序的日期。

我想将给定的数据拆分为训练和测试集。但是,我必须以测试必须比训练集更新的方式拆分数据。

请看给定的例子:

让我们假设我们有按日期排列的数据:

1, 2, 3, ..., n。

从 1 到 n 的数字代表天数。

我想把它从要训练的数据中分成 20% 和要测试集的 80% 数据。

Good results:

1) train set = 1, 2, 3, ..., 20

   test set = 21, ..., 100


2) train set = 101, 102, ... 120

    test set = 121, ... 200
Run Code Online (Sandbox Code Playgroud)

我的代码:

train_size = 0.2
train_dataframe, test_dataframe = cross_validation.train_test_split(features_dataframe, train_size=train_size)                          

train_dataframe = train_dataframe.sort(["date"])
test_dataframe = test_dataframe.sort(["date"])
Run Code Online (Sandbox Code Playgroud)

对我不起作用!

有什么建议?

pandas scikit-learn cross-validation sklearn-pandas

3
推荐指数
1
解决办法
2465
查看次数

Bert 词嵌入的微调

我想加载一个预先训练的 Bert 模型并对其进行微调,特别是使用自定义数据集的模型的词嵌入。任务是使用所选单词的词嵌入进行进一步分析。值得一提的是,该数据集由推文组成,没有标签。因此,我使用了 BertForMaskedLM 模型。

此任务可以使用输入 ID(标记化推文)作为标签吗?我没有标签。只有按随机顺序排列的推文。

从这一点开始,我展示我编写的代码:

首先,我清除了数据集中的表情符号、非 ASCII 字符等,如以下链接(2.3 部分)所述: https ://www.kaggle.com/jaskaransingh/bert-fine-tuning-with-pytorch

二、微调过程的代码:

import torch

device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

model = BertForMaskedLM.from_pretrained('bert-base-uncased')

model.to(device)
model.train()

lr = 1e-2

optimizer = AdamW(model.parameters(), lr=lr, correct_bias=False)
max_len = 82
chunk_size = 20
epochs = 20

for epoch in range(epochs):
    epoch_losses = []
    for j, batch in enumerate(pd.read_csv(path + file_name, chunksize=chunk_size)):
        tweets = batch['content_cleaned'].tolist()
    
        encoded_dict = tokenizer.batch_encode_plus(
                            tweets,                      # Sentence to encode.
                            add_special_tokens = True, # Add …
Run Code Online (Sandbox Code Playgroud)

python language-model word-embedding pytorch bert-language-model

1
推荐指数
1
解决办法
7332
查看次数

仅将 div 的顶部和底部边框加粗

我想加粗 div 的边框。我的问题是我只需要加粗顶部和底部边框。

例如:如果我有一个正方形形状的 div,它应该看起来:

_______________





_______________
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 css 中做到这一点?

html css layout border

0
推荐指数
1
解决办法
3832
查看次数