我的用例是:制作一个每小时运行一次的脚本,以提取有关用户日历的信息。
我的脚本在 Python 中运行,我获得了一个令牌,但我无法获得用户的事件。我已在Microsoft 应用程序注册门户中注册了我的应用程序并授予了 Calendar.read 应用程序权限。管理员通过访问/adminconsent端点表示同意。
这是我获取令牌的代码(此处为文档):
url = 'https://login.microsoftonline.com/common/oauth2/v2.0/token'
data = {
'grant_type': 'client_credentials',
'client_id': app_id,
'scope': 'https://graph.microsoft.com/.default', <--- Really not sure about this here
'client_secret': client_secret,
}
r = requests.post(url, data=data)
token = r.json().get('access_token')
Run Code Online (Sandbox Code Playgroud)
我应该使用什么范围?文档只提到了上面的一个。
并阅读用户的日历:
url = 'https://outlook.office.com/api/v2.0/users/{}/events'.format(user_email)
headers = {
'Authorization': 'Bearer {}'.format(token)
}
r = requests.get(url, headers=headers)
Run Code Online (Sandbox Code Playgroud)
我不确定那 users/{user_email}/部分。
我获得了访问令牌,但在尝试读取用户的日历时出现以下错误:
响应 [401]
访问令牌是使用太弱而无法访问此应用程序的身份验证方法获取的。提供的身份验证强度为 1,要求为 2。
这个问题是关于聚类任务的Multilabel多类分类.这是两个很好的定义,以确保没有人混淆两者:
多类分类是指具有两个以上类的分类任务; 例如,分类一组水果图像,可以是橙子,苹果或梨.多类分类假设每个样本被分配给一个且仅一个标签:水果可以是苹果或梨,但不能同时.
多标签分类为每个样本分配一组目标标签.这可以被认为是预测不相互排斥的数据点的属性,例如与文档相关的主题.文本可能同时涉及任何宗教,政治,金融或教育,也可能不属于任何一种.
根据多标签分类的定义,我们可以理解样本可能有多个真正的二进制标签,因此关于宗教和政治的示例文本将具有如下目标:y = [1,1,0,0].
如果不是使用二进制标签,我们有概率或分数.所以我们的目标现在看起来就像这样:y = [0.5, 0.4, 0.0, 0.1]例如,概率总和为1.该文件是50%的宗教信仰,40%的政治和10%的教育.当然,像这样标记数据集并不是真的可行,所以让我们看看另一组任务,更准确地说是聚类任务,以便了解这是如何发生的.
对于群集任务,我们有一个数据集[a,b,c,d,e]及其真集群[abce,d].可以将聚类视为一种分类任务,其中类是一组操作:与活动集群合并或启动新集群.想象一个逐步构建这些集群的系统.它当然会犯错误,从而[ab,c,d]在过程中产生不连贯的聚类.在查看下一个样本时e,现在无法确切地确定应该添加哪个群集,因为它的真正群集现在被分成两部分.由于我们知道一组正确的聚类,我们可以为每个动作(或潜在的合并)分配一个基于精确或回忆的分数y = [0.5, 0.3, 0, 0.2](这些数字是我想象的结果,而不是精确或召回).那么我们的标签在这里是什么?我们应该与这些集群中的任何集群合并,还是应该启动仅包含新集群的集群e?
一个简单的解决方案是将最高分作为我们的真实标签或潜在行动,因为缺乏更好的术语并使用正常的分类成本函数.这意味着我们的潜在行动merge e->ab是唯一真实的答案,其他一切都同样糟糕.在我看来,这似乎是错误的,因为这两个动作merge e->c,并merge e->d会受到惩罚,即使前者不一定是错的一样.
回到多标签分类,是否有任何成本函数允许这样的"加权标签"而不是1和0.或者我是以错误的角度看待这个?
cluster-analysis machine-learning neural-network multilabel-classification