MCPcopy Create free account
hub / github.com/Persper/code-analytics / FeatureLabelExtractor

Class FeatureLabelExtractor

persper/classifier.py:146–201  ·  view source on GitHub ↗

Cannot be used in Pipeline

Source from the content-addressed store, hash-verified

144
145# Extract the title/descrption/comments/priority/type for jira issues and 'text'/'frc' for fs patches
146class FeatureLabelExtractor(BaseEstimator, TransformerMixin):
147 """Cannot be used in Pipeline"""
148
149 def __init__(self, datasets, text_feature, label_func, file_filter, is_jira):
150 self.datasets = datasets
151 self.text_feature = text_feature
152 self.label_func = label_func
153 self.file_filter = file_filter
154 self.is_jira = is_jira
155
156 def fit(self, X, y=None):
157 return self
158
159 def jira_issue_transform(self, project_list, use_description, use_comment):
160 num_samples = sum([
161 sum([1 for issue in self.datasets[fs] if self.file_filter(issue)])
162 for fs in project_list])
163
164 features = {}
165 features['text'] = [None] * num_samples
166 labels = [None] * num_samples
167 ind = 0
168 for project in project_list:
169 for issue_id, issue in self.datasets[project].items():
170 if self.file_filter(issue):
171 features['text'][ind] = issue[self.text_feature]
172 if use_description and 'description' not in self.text_feature:
173 features['text'][ind] = issue[self.text_feature] + issue['description'].strip()
174 if use_comment and 'comment' not in self.text_feature:
175 features['text'][ind] = issue[self.text_feature] + issue['comment'].strip()
176 if use_description and use_comment:
177 features['text'][ind] = issue[self.text_feature] + issue['description'].strip() + issue['comment'].strip()
178 labels[ind] = self.label_func(issue, self.is_jira)
179 ind += 1
180 return features, labels
181
182 def fs_patch_transform(self, fs_list):
183 num_samples = sum([
184 sum([1 for dp in self.datasets[fs] if self.file_filter(dp)])
185 for fs in fs_list])
186
187 features = {}
188 features['text'] = [None] * num_samples
189 features['frc'] = np.zeros((num_samples, 3))
190 labels = [None] * num_samples
191 ind = 0
192 for fs in fs_list:
193 for dp in self.datasets[fs]:
194 if self.file_filter(dp):
195 features['text'][ind] = dp[self.text_feature]
196 features['frc'][ind] = np.array([dp['num_files'],
197 dp['num_adds'],
198 dp['num_dels']])
199 labels[ind] = self.label_func(dp, self.is_jira)
200 ind += 1
201 return features, labels
202
203class ItemSelector(BaseEstimator, TransformerMixin):

Callers 1

runMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected